Skip to content

Commit d4ce06d

Browse files
committed
last-gear speed now has a denominator
1 parent b2f3e2a commit d4ce06d

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

spirograph.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,20 @@ class Spirograph(Curve):
7676
default=1,
7777
adjacent_step=1,
7878
)
79+
last_speed_denom: Parameter(
80+
name="last_gear_speed_denominator",
81+
key="zd",
82+
default=1,
83+
adjacent_step=1,
84+
)
7985
max_cycles = None
8086

81-
def __init__(self, outer_teeth=144, pen_extra=0.0, last_speed=1):
87+
def __init__(self, outer_teeth=144, pen_extra=0.0, last_speed=1, last_speed_denom=1):
8288
super().__init__()
8389
self.outer_teeth = outer_teeth
8490
self.pen_extra = pen_extra
8591
self.last_speed = last_speed
92+
self.last_speed_denom = last_speed_denom
8693
self.gears = []
8794
self.circles = None
8895

@@ -113,6 +120,7 @@ def make_random(cls, rnd):
113120
)
114121
curve.pen_extra = rnd.randint(0, 5) * 0.5
115122
curve.last_speed = rnd.randint(-2, 2)
123+
curve.last_speed_denom = rnd.choice([1, 2])
116124
return curve
117125

118126
def _make_circles(self):
@@ -136,7 +144,7 @@ def _make_circles(self):
136144
# Gear local speeds
137145
gs0 = 0
138146
gs1 = 1 + io1 * Fraction(gr0) / gr1
139-
gs2 = io2 * self.last_speed
147+
gs2 = io2 * Fraction(self.last_speed) / self.last_speed_denom
140148

141149
# Circle speeds
142150
cs0 = 1

0 commit comments

Comments
 (0)