document some code samples
This commit is contained in:
parent
75efb475f1
commit
ea34db590e
176
ch_2_code.ld
Normal file
176
ch_2_code.ld
Normal file
|
@ -0,0 +1,176 @@
|
|||
&&&&& Code examples from Chapter 2
|
||||
|
||||
&&& Common "library" functions
|
||||
fn ngon!
|
||||
fn cngon!
|
||||
fn arrow!
|
||||
fn flash!
|
||||
|
||||
&&& FIGURE 16
|
||||
fn pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
total_angle
|
||||
n) -> {
|
||||
if lt? (n, 1) then cngon! (90, pipe_rad)
|
||||
else {
|
||||
penup! ()
|
||||
forward! (add (pipe_rad, roll_rad))
|
||||
pendown! ()
|
||||
left! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
& flash! (flash_len)
|
||||
& cngon! (2, roll_rad)
|
||||
arrow! (mult (-1.5, roll_rad))
|
||||
cngon! (90, roll_rad)
|
||||
rt! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
penup! ()
|
||||
back! (add (pipe_rad, roll_rad))
|
||||
left! (theta)
|
||||
pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
add (total_angle
|
||||
theta)
|
||||
dec (n))
|
||||
}
|
||||
}
|
||||
|
||||
pipegon! (60, -30, inv (6), 0, 6)
|
||||
|
||||
&&& FIGURE 17
|
||||
fn pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
total_angle
|
||||
n) -> {
|
||||
if lt? (n, 1) then cngon! (90, pipe_rad)
|
||||
else {
|
||||
penup! ()
|
||||
forward! (add (pipe_rad, roll_rad))
|
||||
pendown! ()
|
||||
left! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
& flash! (flash_len)
|
||||
& cngon! (2, roll_rad)
|
||||
arrow! (mult (-1.5, roll_rad))
|
||||
& cngon! (90, roll_rad)
|
||||
rt! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
penup! ()
|
||||
back! (add (pipe_rad, roll_rad))
|
||||
left! (theta)
|
||||
pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
add (total_angle
|
||||
theta)
|
||||
dec (n))
|
||||
}
|
||||
}
|
||||
|
||||
pipegon! (60, -30, inv (180), 0, 180)
|
||||
|
||||
&&& FIGURE 18
|
||||
fn pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
total_angle
|
||||
n) -> {
|
||||
if lt? (n, 1) then cngon! (90, pipe_rad)
|
||||
else {
|
||||
penup! ()
|
||||
forward! (add (pipe_rad, roll_rad))
|
||||
pendown! ()
|
||||
left! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
& flash! (flash_len)
|
||||
cngon! (2, roll_rad)
|
||||
& arrow! (mult (-1.5, roll_rad))
|
||||
& cngon! (90, roll_rad)
|
||||
rt! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
penup! ()
|
||||
back! (add (pipe_rad, roll_rad))
|
||||
left! (theta)
|
||||
pipegon! (pipe_rad
|
||||
roll_rad
|
||||
& flash_len
|
||||
theta
|
||||
add (total_angle
|
||||
theta)
|
||||
dec (n))
|
||||
}
|
||||
}
|
||||
|
||||
pipegon! (60, -30, inv (180), 0, 180)
|
||||
|
||||
&&& FIGURE 19
|
||||
fn pipegon! (pipe_rad
|
||||
roll_rad
|
||||
flash_len
|
||||
theta
|
||||
total_angle
|
||||
n) -> {
|
||||
if lt? (n, 1) then cngon! (90, pipe_rad)
|
||||
else {
|
||||
penup! ()
|
||||
forward! (add (pipe_rad, roll_rad))
|
||||
pendown! ()
|
||||
left! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
flash! (flash_len)
|
||||
& cngon! (2, roll_rad)
|
||||
& arrow! (mult (-1.5, roll_rad))
|
||||
& cngon! (90, roll_rad)
|
||||
rt! (mult (total_angle, div (pipe_rad, roll_rad)))
|
||||
penup! ()
|
||||
back! (add (pipe_rad, roll_rad))
|
||||
left! (theta)
|
||||
pipegon! (pipe_rad
|
||||
roll_rad
|
||||
flash_len
|
||||
theta
|
||||
add (total_angle
|
||||
theta)
|
||||
dec (n))
|
||||
}
|
||||
}
|
||||
|
||||
pipegon! (60, -30, 40, inv (180), 0, 180)
|
||||
|
||||
&&& FIGURE 20
|
||||
& The mathematics of spirographs
|
||||
& The "degree of symmetrey" is the denominator of the
|
||||
& most reduced fraction of the ratio of the two circle dimensions
|
||||
& And, drawing something internally (as opposed to externally)
|
||||
& the star doubles its number of points.
|
||||
& To draw a 40-pointed star (which is what is in _VMwL), you need
|
||||
& a fraction with a prime number in the numerator and 20 in the
|
||||
& denominator.
|
||||
|
||||
& The other determinant of what the pipegon spirograph looks like
|
||||
& is the frequency with which you draw your "stripe"
|
||||
& I believe the diagrams in the book use 72 iterations/rotation,
|
||||
& for 5º per iteration. That's what's below, but there are many
|
||||
& I prefer. 45 iterations gives a lovely pentagon in the middle, 100
|
||||
& iteration is lovely.
|
||||
|
||||
& the iteration of these below is s_pipegon!
|
||||
pipegon! (400, -140, inv (72), 0, mult (1, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (2, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (3, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (4, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (5, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (6, 72))
|
||||
pipegon! (400, -140, inv (72), 0, mult (7, 72))
|
||||
|
||||
&&& FIGURE 21.1-4: larger roller than pipe, internally
|
||||
& Again, all are s_pipegon!s
|
||||
& 21.1
|
||||
pipegon! (500, -600, inv (72), 0, mult (3, 72))
|
||||
& 21.2
|
||||
rt! (inv (18)); pipegon! (450, -500, inv (72), 0, mult (5, 72))
|
||||
& 21.3
|
||||
rt! (0.125); pipegon! (400, -600, inv (72), 0, mult (3, 72))
|
||||
& 21.4
|
||||
pipegon! (200, -600, inv (72), 0, mult (3, 72))
|
Loading…
Reference in New Issue
Block a user