- XLogo library of procedures

These procedures draw various shapes. Copy and paste into the Editor window as usual. Many are found in programs throughout this site. They are all transparent (turtle position and heading left unchanged). They assume turtle PenUp when called and leave the pen raised when finished.

Some of these procedures use the rArc, LeftArc, RightArc or Arch arc procedures. You'll need to copy and paste these too.

Some shapes cannot be filled from the centre. Their procedures contain a global **Offset**, which can be used to correctly position the turtle.

Download complete library of shape procedures here.

To Annulus :Size

# annulus shape drawn from centre (tp)

Make "Offset **:**Size/3 # global offset fill

Circle **:**Size/2

Circle **:**Size/4

End

Bean

Uses rArc procedure.

To Bean :Size

# bean shape drawn from centre (tp)

Make "Offset **:**Size/3 # global offset fill

rArc 180 **:**Size/2

Forward **:**Size/3 rArc 180 **:**Size/6

Forward **:**Size/3 rArc 180 **:**Size/6

Back **:**Size/3 rArc 180 **:**Size/6

Back **:**Size/3
# return to centre

End

Burst

Draw star Burst with radiating spokes.

Used in DemoStar and Scintillate.

To Burst :Spokes :Radius

# star burst drawn from centre (tp)

Repeat **:**Spokes [

PenDown Forward **:**Radius

PenUp Back **:**Radius

Right 360/**:**Spokes Wait 2]

End

Button

Draw a square button with rounded corners. The value of side is the total
width of the button. The corners need to be less than half the side. If
not, a different shape is drawn (try it and see).

Uses LeftArc procedure.

Used in 15
Puzzle.

To Button :Size :Corner

# rounded corner shape drawn from centre (tp)

Back **:**Size/2 Right 90 Back **:**Size/2-**:**Corner PenDown

Repeat 4 [Forward **:**Size-2***:**Corner LeftArc 90 **:**Corner]

PenUp Forward **:**Size/2-**:**Corner Left 90 Forward **:**Size/2 # return to centre

End

To Chevron :Size

# chevron shape drawn from centre (tp)

Make "Offset **:**Size/4 # global offset fill

PenDown Left 45

Forward 1.414***:**Size/2 Right 135 Forward **:**Size/2

Right 45 Forward 1.414***:**Size/2 Right 90 Forward 1.414***:**Size/2

Right 45 Forward **:**Size/2 Right 135 Forward 1.414***:**Size/2

Left 45 PenUp

End

Clam

Draw clam shape used in some illusions. Similar to lens shape but slightly fatter, with white topside and black underside.

To Clam :Size

# optical clam shape drawn from centre (tp)

SetPC White Back **:**Size/3 Arch 112 0.6***:**Size

Forward **:**Size/3 Left 180

SetPC Black Back **:**Size/3 Arch 112 0.6***:**Size

Forward **:**Size/3 Left 180

End

Clover

Draw lucky 3 leaf clover shape. See CloverLeaf shapes.

Uses Arch procedure.

To Clover :Size

# clover shape drawn from centre (tp)

Repeat 3 [

Forward **:**Size/3.74 Arch 300 0.23***:**Size

Back **:**Size/3.74 Left 120]

End

To Cross :Side

# cross drawn from centre (tp)

Back **:**Side/2 Right 90 Back **:**Side/3 PenDown

Repeat 4 [

Forward **:**Side/1.5 Left 116.57

Forward **:**Side/2.7 Right 143.14

Forward **:**Side/2.7 Left 116.57]

PenUp Forward **:**Side/3 Left 90 Forward **:**Side/2 # r2c

End

Egg

Uses rArc procedure.

To Egg :Size

# egg shape drawn from centre (tp)

Make "Size **:**Size/1.3

Forward **:**Size/2.9 Left 45 rArc 90 0.292***:**Size

Back **:**Size/1.414 rArc 45 **:**Size

Forward **:**Size/2 rArc 180 **:**Size/2

Back **:**Size/2 rArc 45 **:**Size

Forward **:**Size/1.414 Right 45 Back **:**Size/2.9
# r2c

End

Heart

Uses rArc procedure.

To Heart :Size

# heart shape drawn from centre (tp)

Forward **:**Size/4 ForEach "P [1 -1] [ # parity

Left **:**P*90 Forward **:**Size/4 Right **:**P*90

Arch 180 **:**Size/4 Right **:**P*90 Back **:**Size/15 Right **:**P*33.5

Arch 67 49***:**Size/60

Left **:**P*33.5 Forward 19***:**Size/60 Left **:**P*90]

Back **:**Size/4 # return to centre

End

Horseshoe

Uses Arch procedure.

Used in Shapes.

To Horseshoe :Size

# horseshoe shape drawn from centre (tp)

Make "Offset **:**Size/3 # global offset fill

Arch 180 **:**Size/2 Arch 180 **:**Size/4

ForEach "P [1 -1] [ # parity

Left **:**P*90 Back **:**Size/2 Left **:**P*12.75

Arch 25.5 **:**Size Arch 25.5 0.75***:**Size Left **:**P*12.75

Forward 0.875***:**Size Left **:**P*90 Arch 180 **:**Size/8

Right **:**P*90 Back 0.875***:**Size Right **:**P*25.5

Forward **:**Size/2 Right **:**P*90]

End

Kite

Used in Edge and Kite Tree.

To Kite :Size

# kite shape drawn from centre (tp)

Back **:**Size/2 PenDown

Left 18.4 Forward **:**Size/1.26 Right 63.4

Forward **:**Size/2.82 Right 90 Forward **:**Size/2.82

Right 63.4 Forward **:**Size/1.26

PenUp Right 161.6 Forward **:**Size/2 # return to centre

End

Lens

Uses Arch procedure.

(The shapes used in LuneTree are
Lens shapes, drawn from one end to act as branches).

Used in Edge LuneTree TilePattern

To Lens :Size

# lens shape drawn from centre (tp)

Repeat 2 [

Back **:**Size/2 Arch 90 **:**Size/1.414

Forward **:**Size/2 Left 180]

End

Lenses

See Lens Shapes.

Lune

Uses Arch procedure.

To Lune :Size

# lune shape drawn from centre (tp)

Make "Offset **:**Size/3 # global offset fill

Arch 240 **:**Size/2 Back **:**Size/2

Arch 120 **:**Size/2 Forward **:**Size/2

End

Occitan

Uses Arch procedure.

To Occitan :Size

# occitan shape drawn from centre (tp)

Repeat 2 [

Arch 90 **:**Size/2 Left 90 Back 1.414***:**Size/2

Arch 90 **:**Size/2 Forward 1.414***:**Size/2 Left 90]

End

Oval

Uses Arch procedure.

To Oval :Size

# oval shape drawn from centre (tp)

Repeat 2 [

Back **:**Size/4 Arch 90 **:**Size/1.66 Forward **:**Size/4 Left 90

Forward **:**Size/4 Arch 90 **:**Size/4 Back **:**Size/4 Left 90]

End

Parallelogram

Draw a parallelogram from the centre **:**Wide wide and **:**High high.

Subtract PenWidth from **:**Wide and **:**High for a parallelogram of
exact size.

Uses an optional variable **:**P of 1. Use a value of minus 1 for mirror image.

Used in TilePattern

To Pgram :Wide :High [**:**P 1]

# parallelogram shape drawn from centre (tp)

# default parity of 1, use minus 1 for mirror image

LocalMake "Ang ATan **:**Wide/(**:**High/2) # inner angle

LocalMake "Len **:**Wide/ Sin **:**Ang # side length

Back **:**High/4 Right **:**P***:**Ang Back **:**Len/2 PenDown

Repeat 2 [

Forward **:**Len Left **:**P***:**Ang Forward **:**High/2 Left **:**P*(180-**:**Ang)]

PenUp Forward **:**Len/2 Left **:**P***:**Ang Forward **:**High/4 # r2c

End

Pebble

Draw a pebble from the centre **:**Wide wide and **:**High high.

Subtract PenWidth from **:**Wide and **:**High for a pebble of
exact size.

Uses LeftArc procedure.

See Pebble Shapes.

To Pebble :Wide :High

# pebble shape drawn from centre (tp)

LocalMake "Diff Abs **:**Wide-**:**High

If **:**Wide > **:**High

[LocalMake "Rad **:**High/2 LocalMake "Vert 0 LocalMake "Horiz **:**Diff]

[LocalMake "Rad **:**Wide/2 LocalMake "Vert **:**Diff LocalMake "Horiz 0]

PenUp Back **:**High/2 Right 90 Back **:**Horiz/2 PenDown

Repeat 2 [

Forward **:**Horiz LeftArc 90 **:**Rad Forward **:**Vert LeftArc 90 **:**Rad]

PenUp Forward **:**Horiz/2 Left 90 Forward **:**High/2 # return to centre

End

Polygon

Draw a polygon of 'N' sides, with width 'Wide'. The polygon is drawn from the centre.

To Polygon :N :Wide

# polygon of 'N' sides drawn from centre (tp)

Make "Side **:**Wide *Sin 180/**:**N # length of one side

Right 180/**:**N Back **:**Wide/2 Right 90-180/**:**N PenDown

Repeat **:**N

[Forward **:**Side Left 360/**:**N]

PenUp Left 90-180/**:**N Forward **:**Wide/2 Left 180/**:**N # return to centre

End

Propeller

Draw propeller shape.
See CloverWave shapes.

Uses Arch procedure.

To Propeller :Size

# propeller shape drawn from centre (tp)

Repeat 3 [

Forward **:**Size/3 Arch 240 **:**Size/6

Back **:**Size/3 Left 60

Forward **:**Size/3 Left 180 Arch 120 **:**Size/6 Left 180

Back **:**Size/3 Left 60]

End

Quad

Draw quad shape.
See CloverWave shapes.

Uses Arch procedure.

To Quad :Size

# quad shape drawn from centre (tp)

Repeat 4 [

Forward **:**Size/2.185 Left 180

Arch 135 **:**Size/5.7 Left 180

Back **:**Size/2.185 Left 45 Forward **:**Size/2.185

Arch 225 **:**Size/5.7 Back **:**Size/2.185 Left 45]

End

Quatquetra

Best to draw 4 Lens shapes if a filled Quatquetra needed.

Uses Arch procedure.

To Quatquetra :Size

# quatquetra shape drawn from centre (tp)

Repeat 4 [

Back **:**Size/2 Arch 180 **:**Size/2

Forward **:**Size/2 Left 90]

End

Rectangle

Draw a rectangle from the centre with sides of **:**Wide wide and **:**High high.

Subtract PenWidth from **:**Wide and **:**High for a rectangle
of exact size.

Used in Chequer, Swatches, White's
Illusion.

To Rectangle :Wide :High

# rectangle (wide x high) drawn from centre (tp)

Back **:**High/2 Right 90 Back **:**Wide/2 PenDown

Repeat 2 [

Forward **:**Wide Left 90 Forward **:**High Left 90]

PenUp Forward** :**Wide/2 Left 90 Forward** :**High/2 # r2c

End

Rhombus

Draw a rhombus from the centre with width **:**Size.

Subtract PenWidth from **:**Sizefor a rhombus of
exact size.

Uses an optional variable **:**P of 1. Use a value of minus 1 for mirror image.

Used in TilePattern

To Rhombus :Size [**:**P 1]

# rhombus shape drawn from centre (tp)

# default parity of 1, use minus 1 for mirror image

Back **:**Size/4 Right **:**P*63.4 Back **:**Size/1.79 PenDown

Repeat 2 [

Forward **:**Size/0.894 Left **:**P*63.4 Forward **:**Size/2 Left **:**P*116.6]

PenUp Forward **:**Size/1.79 Left **:**P*63.4 Forward **:**Size/4 # r2c

End

Right Angled Triangle

Draw a RAT from the centre with width **:**Size.

Used in TilePattern

To RightAngTri :Size

# right angled triangle drawn from centre (tp)

Back **:**Size/4 Right 45

PenDown Forward 1.414***:**Size/2

Left 135 Forward **:**Size

Left 135 Forward 1.414***:**Size/2 PenUp

Left 135 Forward **:**Size/4 # return to centre

End

Salinon

Uses rArc procedure.

To Salinon :Size

# salinon shape drawn from centre (tp)

rArc 180 **:**Size/2 rArc 180 **:**Size/6

Forward **:**Size/3 rArc 180 **:**Size/6

Forward **:**Size/1.5 Left 180 rArc 180 **:**Size/6

Left 180 Forward **:**Size/3
# return to centre

End

Sector

Inner and outer radius (Rad1 and Rad2) can be in either order. If either is zero, then a 'slice of pie' shape is drawn.

Uses Arch procedure.

Used in Eye.

To Sector :Angle :Rad1 :Rad2

# sector shape drawn from centre (tp)

Make "Offset (**:**Rad1+**:**Rad2) /2 # global offset fill

Arch **:**Angle **:**Rad1

Arch **:**Angle **:**Rad2 Left **:**Angle/2

Forward **:**Rad1 PenDown Forward (**:**Rad2-**:**Rad1)

PenUp Back **:**Rad2 Right **:**Angle

Forward **:**Rad1 PenDown Forward (**:**Rad2-**:**Rad1)

PenUp Back **:**Rad2 Left **:**Angle/2 # return to centre

End

Square

Draw a square from the centre with side length **:**Side.

Subtract PenWidth from **:**Side for a square of exact size.

Used in CloverArt, Condensation, Chessboard, GridArt, Assimilation, Bulge, CafeWall, Grid, Hermann, Intertwine, Marbles, Orbinson, KnightsTour, Partridge, Edge, SpinningSquares.

To Square :Side

# square (side x side) drawn from centre (tp)

Back **:**Side/2 Right 90 Back **:**Side/2 PenDown

Repeat 4 [

Forward **:**Side Left 90]

PenUp Forward **:**Side/2 Left 90 Forward **:**Side/2 # r2c

End

Star

Draw a five pointed star from the centre with height **:**Size.

To Star :Size

# 5 pointed star shape drawn from centre (tp)

Forward **:**Size/2 Right 162 PenDown

Repeat 5 [

Forward **:**Size/2.76 Left 72 Forward **:**Size/2.76 Right 144]

PenUp Left 162 Back **:**Size/2 # return to centre

End

Stars

See Star Shapes.

Triquetra

Uses rArc procedure.

To Triquetra :Size

# triquetra shape drawn from centre (tp)

LocalMake "Step **:**Size/2 *Tan 30

Repeat 3 [

Back **:**Step

Left 90 rArc 60 **:**Size/2

Right 60 rArc 60 **:**Size/2

Left 90 Forward **:**Step Left 120]

End

Yin

Uses rArc procedure.

Uses an optional argument :Parity of 1. Use a value of **Minus 1** for mirror image. eg **(Yin :Size Minus 1)** -in brackets. Instead of **Yin :Size** for normal shape.

Used in Yin Yang.

To Yin :Size [**:**Parity 1]

# yin shape drawn from centre (tp)

# default parity of 1, use minus 1 for mirror image

Make "Offset **:**Size/4 # global offset fill

rArc 180 **:**Size/2 Back **:**Parity ***:**Size/4

rArc 180 **:**Size/4 Back **:**Parity ***:**Size/2

rArc 180 **:**Size/4 Back **:**Parity ***:**Size/4 Left 180

End

Annulus

Bean

Burst

Button

Chevron

Cross

Kite

Lune

Occitan

Parallelogram

Parity: 1

Parallelogram

Parity: -1

Pebble

Quatquetra

Rectangle

Rhombus

Parity: 1

Rhombus

Parity: -1

Right Angled

Triangle (RAT)

Salinon

Sector

Square

Star

Triquetra

Yin

Parity: 1

Yin

Parity: -1

Visit XLogo

web site