def __init__(self, parent, polygon): super().__init__(parent, polygon) self.inset_radius = self.polygon.radius / self.polygon.n self.fork_radius = self.polygon.radius - self.inset_radius self.interior_radius = self.polygon.radius - 2 * self.inset_radius self.outer_circle = geo.Circle(self.polygon.center, self.polygon.radius) self.inner_circle = geo.Circle(self.polygon.center, self.interior_radius)
class TestCircle: circle_default = geo.Circle(geo.Point2(3, 2), 2) circle_other = geo.Circle(geo.Point2(-1, 3), 1) def test_constructor(self): assert self.circle_default.center == geo.Point2(3, 2) assert self.circle_default.radius == 2 def test_copy(self): circle = copy(self.circle_default) assert circle == self.circle_default assert circle is not self.circle_default def test_repr(self): assert str(self.circle_default) == 'Circle(<3.00, 2.00>, radius=2.00)' def test_ne(self): assert self.circle_default != self.circle_other
def _(circle, pen_thickness, stroke_width): approx_num_strokes = stroke_width / pen_thickness radius_min = circle.radius - (approx_num_strokes / 2 * pen_thickness) radius_max = circle.radius + (approx_num_strokes / 2 * pen_thickness) num_strokes = 1 + math.ceil(approx_num_strokes) radii = util.linspace(radius_min, radius_max, num_strokes) for radius in radii: gfx.draw(geo.Circle(circle.center, radius))
def get_rendering_geometry(self): forking_circles = [ geo.Circle(center, self.inset_radius) for center in self._forking_polygon().points ] return forking_circles + [self.outer_circle, self.inner_circle]