Snowflakes
by Bill Spezeski
This project uses a fractal formula from “Logo Models and Methods for Problem Solving” to create six-sided snowflakes by altering one variable in the formula.
This project illustrates
- illustrating fractals in Logo
- changing variables in a formula to change designs
- using FOR command to repeat with a counter
Snowflakes.lgo
; from Chapter 8 of Models and Methods for Problem Solving
; by Bill Spezeski
TO SETUP.FRAC :NPTS :M :R :SCALE :TILT
CS FS WINDOW
MAKE "ANGLE :M*(360/:NPTS)
MAKE "LSIDE :R*(SIN :ANGLE/2)
MAKE "ADJUST (180-:ANGLE)*:TILT + (360-:ANGLE)*(1-:TILT)
SETH 0
PU FD :R/2 PD
RT 90 + :ANGLE/2 + :ADJUST
DRAW.FRAC :NPTS :LSIDE
END
TO DRAW.FRAC :NPTS :LSIDE
IF :LSIDE < 10 STOP
LT :ADJUST
REPEAT :NPTS [FD :LSIDE DRAW.FRAC :NPTS :LSIDE * :SCALE RT :ANGLE]
RT :ADJUST
END
TO SETUP.FRACT :NPTS :M :R :SCALE :TILT :LEVEL
CS SETBG "NAVY SETPC "WHITE FS WINDOW
MAKE "ANGLE :M * (360/:NPTS)
MAKE "LSIDE :R * (SIN :ANGLE /2)
MAKE "ADJUST (180 - :ANGLE) * :TILT + (360 - :ANGLE) *(1- :TILT)
SETH 0
PU FD :R /2 PD
DRAW.FRACT :NPTS :LSIDE :LEVEL
END
TO DRAW.FRACT :NPTS :LSIDE :LEVEL
IF :LEVEL = 0 [STOP]
LT :ADJUST
REPEAT :NPTS [FD :LSIDE DRAW.FRACT :NPTS :LSIDE * :SCALE (:LEVEL - 1) RT :ANGLE]
RT :ADJUST
END
HT
(FOR "I 1 21 [SETUP.FRACT 6 1 100 .5 :i/10 4 WAIT 500] 2)
Procedure | DRAW.FRACT |
Description | Draws six-sided snowflakes |
Level | Beginner |
Tags | Fractals, Formulae |