def segments(self, precision=0):
if max(self.rx, self.ry) < precision:
return [[self.center]]
p = [(0, self.P(0)), (1, self.P(1))]
d = 2 * max(self.rx, self.ry)
while d > precision:
for (t1, p1), (t2, p2) in zip(p[:-1], p[1:]):
t = t1 + (t2 - t1) / 2.
d = Segment(p1, p2).pdistance(self.P(t))
p.append((t, self.P(t)))
p.sort(key=operator.itemgetter(0))
ret = [x for t, x in p]
return [ret]
评论列表
文章目录