- 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
:
Size
for 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