
turtleSpaces Halloween!
Witches, pumpkins, devils, ghosts and black cats are all haunting turtleSpaces this Hallowe’en! turtleSpaces is great for creating 3D models using code.
You can also find these models in the Published projects section of the webLogo interpreter.
The Pumpkin:

The pumpkin is created using the spheroidslice primitive, which creates an elongated slice of a sphere. By creating ten of these slices (every 36 degrees) we can easily create the pumpkin’s body:
TO pumpkin
pu
;penup
rr 180 up 90 lt 18 ra 20
;these were added after in order to position
;the pumpkin to face the camera
pushturtle
;stores the turtle's state on to a stack,
;to be restored later using popturtle
setspheroidaxis false
setfillcolor orange
setpencolor brown
gradient
repeat 10 [
setfillshade 0
spheroidslice 50 10 40 18 23 1.5
rt 36
]
Next, we’ll position the turtle and use the domoid primitive to create the eyes, nose and mouth:
left 2 raise 37 down 42 right 30 lo 85 setfillcolor 13 setpencolor 8 setspheroidaxis true domoid 15 10 3 0.5 ;eye ra 85 lt 30 UP 42 RT 40 DN 42 RT 30 lo 85 domoid 15 10 3 0.5 ;other eye ra 85 LT 30 UP 42 LT 20 DN 50 RT 30 lo 85 domoid 10 10 3 0.5 ;nose ra 85 LT 30 lo 3 DN 48 FD 40 lo 60 domoid 17 10 10 0.5 ;mouth
Finally, we’ll create the pumpkins stem:
popturtle ;return the turtle to its position, orientation ;and so forth when we did pushturtle nogradient setfc 8 ;setfillcolor cylinder 8 60 10 lo 60 up 90 rt 180 sr 20 lt 72.5 ;sr = slideright cylinderarc 8 20 10 10 3 home ht END
The Witch:
The witch procedure first stores the pumpkin as a turtle model, then begins with her signature feature: her hat!
First we position the camera and store the pumpkin as a turtle model:
TO witch reset cam:pullout 150 cam:orbitleft 20 cam:orbitup 10 begintag "pumpkin pumpkin endtag newmodel "pumpkin "pumpkin cs
Then we create her hat:
pu setfs 0 dn 90 ra 80 setoriginvectors vectors pushturtle setfc 5 rr 180 cone 40 100 20 cylinder 80 5 20
Next is her head:
rr 180 setfc 1 up 5 cylinderslice 40 50 20 10 lo 50 cutsphereslice 40 20 20 10 20 10 up 90 spot 40 dn 90 ra 50 dn 5 lo 30 setfc 11 rl 90 icospheroid 35 1.5 rr 90 ra 20 lt 30 bk 30 setfc 2 ico 7 fd 30 rt 60 bk 30 ico 7 fd 30 lt 30 lo 30 up 90 rr 180 up 10 setfc 11 cutcone 15 7 60 20 lo 60 setfc 1 dome 7 20 20 popturtle
Then her body:
lo 100
setfc 2
rr 180
cappeddomoid 30 20 20 2
rr 180
setfc 9
cylindroid 30 50 20 1.2
pushturtle
lo 50
domoid 30 50 20 1.2
repeat 2 [
pushturtle
sr 25
lo 10
dn 30
rr 180 dome 20 20 20
rr 180
cylinder 20 50 20
lo 50
ico 20
up 90
cutcone 20 15 50 20
lo 50
setfc 2
cylinder 20 20 20
lo 20
dn 90
cylindroid 10 20 20 2
lo 20 domoid 10 20 20 2
ra 20 rr 180
cylindroid 10 10 20 2
lo 10
domoid 10 20 20 2
popturtle sl 50]
popturtle
pushturtle
sr 45
dn 20
ra 4
setfc 11
cylinder 13 50 20
lo 50
ico 13
dn 90
cutcone 13 8 50 20
lo 50
ico 12
setmodelscale 0.5
dn 90 rt 160 lo 25 stamp "pumpkin
setmodelscale 1
popturtle
pushturtle
sl 45
dn 20
ra 4
setfc 11
rl 9
cylinder 13 50 20
lo 50
ico 13
dn 20
rl 40
cutcone 13 8 50 20
lo 50
ico 12
And finally her broom!
setvectors originvectors
setx 0
pushturtle
up 80
setfc 8
cylinder 5 100 20
lo 100
lo 5
rr 180
cappeddomoid 13 20 20 3.5
rr 180
cylindroid 13 15 20 3.5
lo 15
sl 35
setfc 13
repeat 15 [
rl -8 + repcount
cylinder 0.1 * (10 + random 20) 70 20
rr -8 + repcount
sr 5
randfs
]
sl 72.5
fd 5
repeat 14 [
randfs
rl -7 + repcount
cylinder 0.1 * (10 + random 20) 70 20
rr -7 + repcount
sr 5
]
bk 10
sl 5
repeat 14 [
randfs
rr -7 + repcount
cylinder 0.1 * (10 + random 20) 70 20
rl -7 + repcount
sl 5
]
popturtle
up 90
rr 180
up 10
setfc 8
cylinder 5 100 20
lo 100
dome 5 20 20
dn 90
ra 5
bk 10
st
END
The Devil:

This unicycling devil robot is a scary creature!
His head is made out of a padded voxel:
TO devil
cs
pu
setfc 11
cylinder 10 50 20
bk 10
voxeloid 50 20 50
fd 10
sr 50
cylinder 10 50 20
sl 60
voxeloid 70 50 50
fd 50
sr 10
cylinder 10 50 20
bk 10
voxeloid 50 20 50
fd 10
sr 50
cylinder 10 50 20
rr 180
repeat 2 [
repeat 4 [
dome 10 5 20
rl 90
cylinder 10 50 20
rr 90
sr 50
rt 90
]
up 180
ra 10
voxeloid 50 50 10
lo 60
lt 90
]
lo 10
bk 15
sr 15
lo 0.1
setfc 1
polyoval 10 5 100
bk 20
polyoval 10 5 100
sl 10
rr 180
fd 5
rt 60
quad 15 3
rt 30
sl 10
rt 30
quad -15 3
lt 30
sr 5
bk 40
pushturtle
repeat 8 [
quad 4 3
sr 4
lt 10
]
popturtle
pushturtle
repeat 8 [
quad -4 3
sl 4
rt 10
]
popturtle
fd 50
lo 20
sl 20
up 90
pushturtle
repeat 2 [
repeat 15 [
cylinder 16 - repcount 10 10
lo 8
up 10
rr 30 - 20 * repabove 1
]
popturtle
sr 40
pushturtle
]
And his body:
sl 60 ra 60 bk 15 rr 180 rt 20 setfc 13 cylinder 30 10 20 setfc 1 lo 10 cylindroid 30 20 20 2 sl 40 setfc 1 cylindroid 20 100 20 1 pusht lo 100 ico 20 up 120 rr 30 cutcone 20 10 100 20 lo 100 up 90 rl 15 ra 20 setfc 10 cylinder 20 40 20 popt pusht sr 80 cylinder 20 100 20 lo 100 ico 20 up 60 rl 20 cutcone 20 10 100 20 lo 100 setfc 5 up 90 rl 10 ra 20 cylinder 20 40 20 popt sr 40 cylinder 40 100 20 lo 160 rr 90 ra 20 setfc 11 cylinder 60 40 20 setfc 13 ra 5 cylinder 10 50 20 lt 90 lo 2.5 up 90 cylinder 2.5 100 10 dn 90 lo 45 up 90 cylinder 2.5 100 10 END
The Ghosts:
These bug-eyed PacMan-style ghosts are a real scream!
The Ghost:
TO ghost
up 90
make "gc 1 + random 14
make "ec pick [0 1 2 3 4 8 9]
setfc :gc
dome 50 20 18
rr 180
cylinder 50 50 18
lo 50
dn 90
repeat 18 [
tent 9 30 49.2
rl 20
]
setfc 15
up 90
ra 50
fd 50
rr 90
icospheroid 15 1.5
fd 15
setfc :ec
icospheroid 7.5 1.5
rl 90
bk 65
rt 40
fd 50
setfc 15
rr 90
icospheroid 15 1.5
fd 15
setfc :ec
icospheroid 7.5 1.5
rl 90
END
The Ghost Circle (this code assumes the above code is in a procedure called ghost:)
TO ghostcircle
reset
snappy:newworker [
setposition [0 0 0]
dropanchor
forever [
orbitleft 0.5
wait 1
]
]
randbg
setbs 13
setfs 0
dropanchor
up 90
pu
ra 80
gradient
randpc
setfc bg
spot 400
lo 80
nogradient
pullout 300
repeat 18 [
pushturtle
dn 90
rr 20
ghost
popturtle
orbitright 20
]
END
The Cats:
Don’t get in the way of these cats, or it’s bad luck!
The Cat’s Eye:
TO cateye setfc 13 pu rt 90 spot 10.1 fd 4 fiso 9.3 20 bk 8 rt 180 fiso 9.3 20 bk 4 ra 0.1 setfc 0 polyspot 6 40 lt 90 fd 3 fiso 5.2 7 bk 6 rt 180 fiso 5.2 7 bk 3 END
The Cat:
TO cat
sl 30
setfs 0
cateye
sr 60
cateye
sl 30
lo 0.3
bk 10
setfc 5
setfs 12
cylindroid 40 10 50 2
sl 20
lt 30
fd 25
tent 30 70 10
bk 25
rt 30
sr 40
rt 30
fd 25
tent 30 70 10
bk 25
lt 30
sl 20
bk 5
up 180
setfs 0
setfc 11
dome 5 20 20
fd 15
setfc 5
setfs 5
dome 8 20 20
lo 3
dropanchor
tether
pullout 7
rt 180
orbitright 70
setpw 2
repeat 2 [
repeat 5 [
line 80
orbitright 10
]
orbitright 130
]
pullin 7
rr 180
lo 12
rt 20
setfs 12
sr 20
setfs 13
cylindroid 40 100 50 2
lo 90
rr 90
setfs 12
cylinder 10 200 20
lo 200
dome 10 20 20
ra 200
rr 180
up 20
cylinder 10 130 20
lo 130
dome 10 20 20
ra 130
dn 40
cylinder 10 130 20
lo 130
dome 10 20 20
ra 130
sr 80
cylinder 10 130 20
lo 130
dome 10 20 20
ra 130
up 40
cylinder 10 130 20
lo 130
dome 10 20 20
ra 130
END
The Cat Ring:
TO catring
cs
pu
dn 90
dropanchor
pullout 250
pu
repeat 8 [
pushturtle
up 90
cat
popturtle
orbitright 45
]
END
Happy Hallowe’en!






















