from cs1graphics import * class Star(Polygon): def __init__(self, numRays=5, outerRadius=10, innerRatio=.5, center=Point(0,0)): Polygon.__init__(self) # call the parent constructor top = Point(0, -outerRadius) # top point is directly above the origin angle = 180.0 / numRays for i in range(numRays): self.addPoint(top ^ (angle * (2 * i))) # outer point self.addPoint(innerRatio * top ^ (angle * (2 * i + 1))) # inner point # self.adjustReference(0, outerRadius) # move reference from top point to center self.move(center.getX(), center.getY()) # re-center entire star self._innerRatio = innerRatio # record as an attribute def setInnerRatio(self, newRatio): factor = newRatio / self._innerRatio self._innerRatio = newRatio for i in range(1, self.getNumberOfPoints(), 2): # inner points only self.setPoint(factor * self.getPoint(i), i)