Activity Idea: Gone Fishin’

Build this cool island scene using turtleSpaces Logo and a few basic shapes!

First we begin with a tree. We can build a trunk using a repeat loop of cylinders that get narrower in diameter and longer as we go. We can introduce a slight curve as well by tilting the turtle up a bit each cylinder we create:

Next we need to create the leaves, which we can do using the fiso (filled triangle) primitive. We can use a repeat loop to create a series of triangles growing in size, and then a second repeat loop to create a further series of triangles shrinking in size. In both cases, we tilt the turtle down a bit each triangle we create:

Then we can use a further wrapping repeat loop to create 8 of them around the trunk:

Let’s add six coconuts to the top of the tree using another repeat loop and icospheroids:

But one tree is kind of lonely, so let’s create a ring of eight around the edge of the island using the orbitleft primitive. We can also make the island more mound-like using a domoid:

Let’s add a dock Myrtle can fish off of made out of cylinders and voxeloids:

And a hut to shelter in made out of made out of a cutsphereslice and a sphereslice:

Myrtle’s all set, let’s get her fishing! The fishing rod is created using a thick line and a thin line:

The sunset effect is created using an inverted gradient tube:

Good job, Myrtle! You can check out the island yourself at

Just click the flag to create the island. Don’t forget that you can click and drag on the viewport to move the camera, use the scroll wheel to zoom in and out, rotate using the right button and drag, and click both buttons and drag to pan.

Check out the code to see how it’s done! Then try something similar yourself. What will your island look like? Share it so we can see for ourselves!

turtleArt Thumbtack String Corkboard

This commented Logo source code creates a thumbtack, a cork board, and then draws random string art using them.

Read the ;comments to learn more about what the primitives do and what their shortcuts are.

Try some of the primitives out in turtleSpaces interactive mode (the myrtle prompt) and see what they do!

You can drag-select the source code and then paste it into the turtleSpaces editor (which you enter by typing ed and Enter or pressing control-shift-E) using control-shift-V (paste)

Then exit back to interactive mode using control-shift-O (save) and then type stringart and Enter to execute it.

Change elements of the code and see what happens!

TO tack
  ;create a thumbtack, or pushpin
  setfillcolor pick without 5 without 10 range [1 15]
  ;pick a number between 1 and 15 except 5 and 10
  cylinder 4 2 20
  ;cylinder takes width depth sides
  lower 2
  ;lowers the turtle eg moves beneath it
  cutcone 2 3 7 20
  ;cutcone takes topwidth bottomwidth depth sides
  lo 7
  ;lo is shortcut for lower
  cylinder 4 2 20
  lo 2
  setfc pick [5 10]
  ;setfc is shortcut for setfillcolor, the color
  ;used for painting shapes
  cylinder 1 5 8
  lo 5
  cone 1 1 8
  raise 16
  ;raises the turtle, eg moves above it
  ;all done!

TO corkboard
  ;create a corkboard to push our pins into
  setpos [-205 -116]
  setfillcolor 8 setfillshade -4
  ;setfillshade takes a range of -15 to 15
  forward 5 lo 3 slideright 5
  voxeloid 400 222 4
  ;voxeloid takes width height depth
  ;this creates the surface of our corkboard
  slideleft 5 ra 3 back 5
  setfs 6
  ; setfs is shortcut for setfillshade
  voxeloid 10 232 10
  ;this and subsequent voxeloids
  ;create the frame
  right 90
  sl 10
  ;sl is shortcut for slideleft
  voxeloid 10 410 10
  fd 400
  ;fd is shortcut for forward
  left 90
  bk 10
  ;bk is shortcut for back
  voxeloid 10 232 10
  fd 222 lt 90 bk 10
  ;lt is shortcut for left
  voxeloid 10 410 10
  ;that's all folks!

TO stringart
  ;resets the workspace
  snappy:run pick [
    [pullout 10]
    [pullout 30 orbitdown 70]
    [orbitleft 20 orbitdown 45 rollright 10 pullout 60 rr 10 sl 25 lo 40]
    ;rr is shortcut for rollright
    [orbitright 20 orbitdown 45 rollleft 10 pullout 60 rl 10 sr 25 lo 40]
    ;rl is shortcut for rollleft
  ;pick a camera sequence and execute it as
  ;snappy, the camera turtle
  ;if we need snappy to do more sophisticated
  ;things, we can store procedures inside him
  ;logo is all about having the freedom to do
  ;things in multiple ways!
  setpenwidth 1 + random 5
  ;sets the 'width' of the pen, from 1 to 5
  ;randps and randfs (aka randompenshade and randomfillshade)
  ;set a random shade between -12 and 12
  ;execute corkboard procedure
  repeat 20 + random 20  [
    ;do the following 20 + 0-19 times:
    ;shortcut for randompencolor
    setpos {-190 + random 380 -100 + random 200}
    ;move to a random position
    ;pu is shortcut for penup
    ;save the turtle state on the 'stack'
    ;you can have multiple states on the stack
    raise 10 + random 4 up -10 + random 20 rr -10 + random 20
    ;move into a semi-random position
    ;to give our tacks a more natural-looking
    ;moving in negative values moves the opposite
    ;direction, eg left -90 turns right 90 degrees
    ;execute tack procedure
    ;(create a tack)
    ;load the turtle state from the 'stack'
    ;this puts it back where and how it was when
    ;we pushed it
    ;pd is shortcut for pendown
    ;this will cause us to create a line to the
    ;next random position
  ;repeat the above however many times
  ;specified by 20 + random 20
  ;ta da!
  ;for extra credit, get some tacks, a corkboard, and some
  ;colored string and make some string art of your own!
  ;consider the angles the turtle would need to turn to travel
  ;along the line of string created between all the pins
  ;were the turtle to travel the string like driving
  ;down a road


Example: 3D Filled Trees

Filled triangles

TO tree
  clearscreen penup 
  setpos [0 80] setfillcolor 4 
  repeat 6 [
    setfillshade -6 + 3 * repcount 
    ;repcount returns the current iteration
    back 4 * repcount 
    fiso 8 * repcount 5 * repcount 
    ;fiso = filled iso triangle
    lower 0.1
  setfillcolor 8 setfillshade 5 
  back 50 slideleft 10 
  quad 20 50

‘Tents’ – fiso prisms

TO tree3d
  cs pu setpos [0 80] 
  ;cs = clearscreen
  ;pu = penup
  setfc 4 
  ;setfc = setfillcolor
  repeat 6 [
    setfs -6 + 3 * repcount 
    ;setfs = setfillshade
    bk 4 * repcount 
    ;bk = back  
    tent 8 * repcount 5 * repcount 10 
    lo 0.1
    ;lo = lower
  setfc 8 setfs 5
  bk 50 sl 10 
  ;sl = slideleft
  voxeloid 20 50 10
  ;voxeloids are stretched cubes


TO conetree
  cs pu setpos [0 80] 
  setfc 4 up 90 
  repeat 6 [
    setfs -6 + 3 * repcount 
    ra 4 * repcount 
    cone 8 * repcount 5 * repcount 20
  setfc 8 setfs 5 ra 50
  cylinder 8 50 20

Pyramids (5-sided ‘cones’)

TO pyramidtree
  cs pu setpos [0 80] 
  setfc 4 up 90 
  repeat 6 [
    setfs -6 + 3 * repcount ra 4 * repcount
    cone 8 * repcount 5 * repcount 4
    ;while there is also a pyramid primitive, you can 
    ;also create a pyramid by creating a 4-sided cone
  setfc 8 setfs 5 ra 50 
  cylinder 8 50 4

4-sided cones

TO tetratree
  cs pu setpos [0 80] setfc 4 up 90 
  repeat 6 [setfs -6 + 3 * repcount 
    ra 4 * repcount 
    cone 8 * repcount 5 * repcount 3] 
  setfc 8 setfs 5 ra 50 
  cylinder 8 50 3