increase circle resolution when zoomed in

This commit is contained in:
Josh Holtrop 2011-04-01 15:58:45 -04:00
parent bcb47a4825
commit edbfce91d2

View File

@ -12,7 +12,7 @@ class SketchWidget:
def __init__(self, sketch): def __init__(self, sketch):
self.sketch = sketch self.sketch = sketch
self.view_center = (0, 0) self.view_center = (0, 0)
self.view_width = 5.0 self.view_width = 4.0
self.size = (1, 1) self.size = (1, 1)
try: try:
# try double-buffered # try double-buffered
@ -108,10 +108,21 @@ class SketchWidget:
self.drawFilledLine(pt0[0], pt0[1], pt1[0], pt1[1], size) self.drawFilledLine(pt0[0], pt0[1], pt1[0], pt1[1], size)
def drawCircle(self, shape, size): def drawCircle(self, shape, size):
steps = 16
step = 2 * math.pi / steps
center = self.ptToScreenPt(shape.getCenter()) center = self.ptToScreenPt(shape.getCenter())
rad = self.distToScreenDist(shape.getRadius()) rad = self.distToScreenDist(shape.getRadius())
if rad < 30:
steps = 12
elif rad < 50:
steps = 16
elif rad < 100:
steps = 24
elif rad < 200:
steps = 36
elif rad < 400:
steps = 48
else:
steps = 64
step = 2 * math.pi / steps
for i in range(steps + 1): for i in range(steps + 1):
angle = i * step angle = i * step
next_angle = (i + 1) * step next_angle = (i + 1) * step