[Arc] improve bounding box edge cases

This commit is contained in:
Jan Petykiewicz 2026-02-15 01:35:43 -08:00
commit ad49276345

View file

@ -362,17 +362,20 @@ class Arc(PositionableImpl, Shape):
yn, yp = sorted(rx * sin_r * cos_a + ry * cos_r * sin_a) yn, yp = sorted(rx * sin_r * cos_a + ry * cos_r * sin_a)
# If our arc subtends a coordinate axis, use the extremum along that axis # If our arc subtends a coordinate axis, use the extremum along that axis
if a0 < xpt < a1 or a0 < xpt + 2 * pi < a1: if abs(a1 - a0) >= 2 * pi:
xp = xr xn, xp, yn, yp = -xr, xr, -yr, yr
else:
if a0 <= xpt <= a1 or a0 <= xpt + 2 * pi <= a1:
xp = xr
if a0 < xnt < a1 or a0 < xnt + 2 * pi < a1: if a0 <= xnt <= a1 or a0 <= xnt + 2 * pi <= a1:
xn = -xr xn = -xr
if a0 < ypt < a1 or a0 < ypt + 2 * pi < a1: if a0 <= ypt <= a1 or a0 <= ypt + 2 * pi <= a1:
yp = yr yp = yr
if a0 < ynt < a1 or a0 < ynt + 2 * pi < a1: if a0 <= ynt <= a1 or a0 <= ynt + 2 * pi <= a1:
yn = -yr yn = -yr
mins.append([xn, yn]) mins.append([xn, yn])
maxs.append([xp, yp]) maxs.append([xp, yp])