- optical illusion
The square grid distorts and appears to bulge outwards.
Three sets of grid tiles are drawn, background light and dark squares, black or white dots and foreground gray outline squares.
Try other even Order values from 2 to 12...
To
New
# set default screen, pen and turtle values
ResetAll SetScreenSize [400 400] HideTurtle
SetSC Black SetPC Green SetPS 1 PenUp
End
To
GridSq
:
Order
:
Side
# draw tile at each column x row position
LocalMake "
Offset
(1+
:
Order
)/2
For (List "
Col
1
:
Order
) [
For (List "
Row
1
:
Order
) [
SetXY
:
Side
*(
:
Col
-
:
Offset
)
:
Side
*(
:
Row
-
:
Offset
)
Tile
:
Col
:
Row
:
Side
] ]
End
To
Tile
:
Col
:
Row
:
Side
# use global value of :Tile to draw selected tile
Run (Word "
Tile
:
Tile
)
:
Col
:
Row
:
Side
End
To
TileBg
:
Col
:
Row
:
Side
If
Even?
(
:
Col
+
:
Row
) [SetPC [0 102 153]] [SetPC [153 204 255]]
Square
:
Side
-1 Fill Wait 2
End
To
TileDot
:
Col
:
Row
:
Side
If X>0 [Make "
Col
:
Col
+1]
If Y>0 [Make "
Row
:
Row
+1]
If
Even?
(
:
Col
+
:
Row
) [SetPC Black] [SetPC White]
SetPW
:
Side
/2 Dot Pos Wait 3
End
To
TileSq
:
Col
:
Row
:
Side
SetPC Gray SetPW
:
Side
/30
Square
:
Side
End
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
To
Even?
:
Num
# return 'true' if Num even, else return 'false
'
If (Mod
:
Num
2)=0 [Output "True] [Output "False]
End
To
Go
:
Order
New
Make "
Side
Int (400/(
:
Order
+1))
GlobalMake "
Tile
"
Bg
GridSq
:
Order
+1
:
Side
Wait 20
GlobalMake "
Tile
"
Dot
GridSq
:
Order
:
Side
Wait 20
GlobalMake "
Tile
"
Sq
GridSq
:
Order
-1
:
Side
End