diff --git a/masque/shapes/arc.py b/masque/shapes/arc.py index 9ae06ce..f3c9f79 100644 --- a/masque/shapes/arc.py +++ b/masque/shapes/arc.py @@ -463,13 +463,18 @@ class Arc(PositionableImpl, Shape): `[[a_min_inner, a_max_inner], [a_min_outer, a_max_outer]]` """ 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): wh = sgn * self.width / 2.0 rx = self.radius_x + wh ry = self.radius_y + wh 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): a1 += sign * 2 * pi