RADIUS = 12
dtheta = 2 * math.pi / N
dx = RADIUS * dtheta
dr = -5 / N
MAX_HEIGHT = 10

t = ExtruderTurtle()

t.name("spiral-tower.gcode")
t.setup(x=100, y=100)
t.set_density(0.05)
t.rate(1000)

for l in range(40):
    radius = RADIUS
    prop = l / 40
    while radius > 0:
        t.move_lift(dx, prop * MAX_HEIGHT * (-dr) / RADIUS)
        t.right(dtheta)
        radius += dr
        dx = radius * dtheta
    t.lift(0.2)
    while radius < RADIUS:
        radius += -dr
        dx = radius * dtheta
        t.left(dtheta)
        t.move_lift(-dx, prop * MAX_HEIGHT * dr / RADIUS)
    t.lift(0.2)

t.finish()
Пример #2
0
dx = RADIUS * dtheta
dr = -0.5 / N
MAX_HEIGHT = 6

t = ExtruderTurtle()

t.name("nonplanar-bump.gcode")
t.setup(x=100, y=100)
t.set_density(0.05)
t.rate(1000)

for l in range(10):
    radius = RADIUS
    prop = l / 10
    while radius > 0:
        t.move_lift(
            dx, prop * radius * 2 * MAX_HEIGHT / (-RADIUS**2 / dr - RADIUS))
        t.right(dtheta)
        radius += dr
        dx = radius * dtheta
    t.lift(0.15)
    while radius < RADIUS:
        radius += -dr
        dx = radius * dtheta
        t.left(dtheta)
        t.move_lift(
            -dx, -prop * radius * 2 * MAX_HEIGHT / (-RADIUS**2 / dr - RADIUS))
    t.lift(0.15)

t.finish()