add accessor methods in shapes to get vars

This commit is contained in:
Josh Holtrop 2011-04-01 09:59:44 -04:00
parent 0ce01c7b58
commit 5678df7dbb
3 changed files with 21 additions and 6 deletions

View File

@ -22,3 +22,9 @@ class Circle(Shape):
return ([1, 0, -1], [0, 1, 0])
elif ptNum == 4:
return ([1, 0, 0], [0, 1, -1])
def getCenter(self):
return (self.vars[0], self.vars[1])
def getRadius(self):
return self.vars[2]

View File

@ -18,3 +18,9 @@ class Line(Shape):
return ([0, 0, 1, 0], [0, 0, 0, 1])
elif ptNum == 2:
return ([0.5, 0, 0.5, 0], [0, 0.5, 0, 0.5])
def getPt(self, ptNum):
if ptNum == 0:
return (self.vars[0], self.vars[1])
elif ptNum == 1:
return (self.vars[2], self.vars[3])

View File

@ -89,19 +89,22 @@ class SketchWidget:
return True
def drawLine(self, shape, size):
self.drawFilledLine(shape.vars[0], shape.vars[1],
shape.vars[2], shape.vars[3], size)
pt0 = shape.getPt(0)
pt1 = shape.getPt(1)
self.drawFilledLine(pt0[0], pt0[1], pt1[0], pt1[1], size)
def drawCircle(self, shape, size):
steps = 16
step = 2 * math.pi / steps
center = shape.getCenter()
rad = shape.getRadius()
for i in range(steps + 1):
angle = i * step
next_angle = (i + 1) * step
x0 = shape.vars[0] + shape.vars[2] * math.cos(angle)
y0 = shape.vars[1] + shape.vars[2] * math.sin(angle)
x1 = shape.vars[0] + shape.vars[2] * math.cos(next_angle)
y1 = shape.vars[1] + shape.vars[2] * math.sin(next_angle)
x0 = center[0] + rad * math.cos(angle)
y0 = center[1] + rad * math.sin(angle)
x1 = center[0] + rad * math.cos(next_angle)
y1 = center[1] + rad * math.sin(next_angle)
self.drawFilledLineUncapped(x0, y0, x1, y1, size)
self.drawFilledCircle(x0, y0, size, 8)