[Arc] Improve handling of full rings
This commit is contained in:
parent
36fed84249
commit
fe70d0574b
1 changed files with 6 additions and 1 deletions
|
|
@ -463,13 +463,18 @@ class Arc(PositionableImpl, Shape):
|
||||||
`[[a_min_inner, a_max_inner], [a_min_outer, a_max_outer]]`
|
`[[a_min_inner, a_max_inner], [a_min_outer, a_max_outer]]`
|
||||||
"""
|
"""
|
||||||
aa = []
|
aa = []
|
||||||
|
d_angle = self.angles[1] - self.angles[0]
|
||||||
|
if abs(d_angle) >= 2 * pi:
|
||||||
|
# Full ring
|
||||||
|
return numpy.tile([0, 2 * pi], (2, 1)).astype(float)
|
||||||
|
|
||||||
for sgn in (-1, +1):
|
for sgn in (-1, +1):
|
||||||
wh = sgn * self.width / 2.0
|
wh = sgn * self.width / 2.0
|
||||||
rx = self.radius_x + wh
|
rx = self.radius_x + wh
|
||||||
ry = self.radius_y + wh
|
ry = self.radius_y + wh
|
||||||
|
|
||||||
a0, a1 = (numpy.arctan2(rx * numpy.sin(ai), ry * numpy.cos(ai)) for ai in self.angles)
|
a0, a1 = (numpy.arctan2(rx * numpy.sin(ai), ry * numpy.cos(ai)) for ai in self.angles)
|
||||||
sign = numpy.sign(self.angles[1] - self.angles[0])
|
sign = numpy.sign(d_angle)
|
||||||
if sign != numpy.sign(a1 - a0):
|
if sign != numpy.sign(a1 - a0):
|
||||||
a1 += sign * 2 * pi
|
a1 += sign * 2 * pi
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue