Today I was reading a blog post about Logo and I decided to play a little with UCBLogo (Berkeley Logo) and try to draw some fractal (more specifically, L-Systems) with it.
Here is a Koch Curve:
The code:
to M n
ifelse notequal? :n 0 [
M :n - 1
lt 90
M :n - 1
rt 90
M :n - 1
rt 90
M :n - 1
lt 90
M :n - 1
] [
fd 10
]
end
cs
pu
lt 90
fd 150
rt 180
pd
M 3
And here is a Fractal Plant:
The code:
make "stackpos []
make "stackhead []
to store
push "stackpos pos
push "stackhead heading
end
to restore
pu
setpos pop "stackpos
setheading pop "stackhead
pd
end
to F n l
ifelse notequal? :n 0 [
F :n - 1 :l
F :n - 1 :l
] [
fd :l
]
end
to X n l
if notequal? :n 0 [
F :n :l
lt 25
store
store
X :n - 1 :l
restore
rt 25
X :n - 1 :l
restore
rt 25
F :n :l
store
rt 25
F :n :l
X :n - 1 :l
restore
lt 25
X :n - 1 :l
]
end
setbackground 2
setpencolor 0
cs
pu
bk 50
lt 90
fd 150
rt 90
pd
rt 45
X 5 2
The code could be a lot better, but that’s what I was able to grasp in about 3 hours. The last time I had really used logo was in primary school, when I was 8 or 9-years old.
I don’t know if it’s a problem with my Fractal Plant function code or if it’s a bug in UCBLogo, but sometimes execution froze completely and I had to hit Alt+S to stop it and call the function again until it worked. I also don’t know if that’s a limitation of UCBLogo or if I just haven’t studied it enough, but I couldn’t find out a way to unset a variable or redefine a function.
Anyways, Logo is absolutely fun to play with. As the author of the previously mentioned post said, it is kind of addicting to think of a set of steps and order the turtle to repeat them a few hundreds of times to see what happens. I consider the language itself a bit confusing at first, but I guess I should read more about it before forming any strong opinions on it.


