def flower(t, n, rf, re): angle = asin(0.5 * float(rf) / re) * 180 / pi rt(t, angle) for _ in range(n): arc(t, re, angle * 2) lt(t, 180 - angle * 2) arc(t, re, angle * 2) lt(t, 180 - angle * 2 + 360 / n)
def pie(t, sides, radius): angle1 = 360.0 / sides angle2 = (180.0 - angle1) / 2 print angle1 print angle2 rt(t, angle1 / 2) for _ in range(sides): fd(t, radius) lt(t, 180 - angle2) fd(t, 2 * radius * sin(pi / 180 * angle1 / 2)) lt(t, 180 - angle2) fd(t, radius) rt(t, 180)
def arc(t, r, angle): """Draws an arc with the given radius and angle. t: Turtle r: radius angle: angle subtended by the arc, in degrees """ arc_length = 2 * math.pi * r * abs(angle) / 360 n = int(arc_length / 4) + 1 step_length = arc_length / n step_angle = float(angle) / n # making a slight left turn before starting reduces # the error caused by the linear approximation of the arc lt(t, step_angle/2) polyline(t, n, step_length, step_angle) rt(t, step_angle/2)
def isosceles(t, r, angle): """Draws an icosceles triangle. The turtle starts and ends at the peak, facing the middle of the base. t: Turtle r: length of the equal legs angle: peak angle in degrees """ y = r * math.sin(angle * math.pi / 180) rt(t, angle) fd(t, r) lt(t, 90+angle) fd(t, 2*y) lt(t, 90+angle) fd(t, r) lt(t, 180-angle)