Code Sketch
Sierpinski Square
Category: Art
clear
invisible
setAnimationDelay(4)
setPenColor(blue)
setPenThickness(1)
setFillColor(color(0x77FFAA))
def relativeJumpTo(dx: Int, dy: Int) = jumpTo(position.x + dx, position.y + dy)
def doSquare(size: Int): Unit =
{
val diag = size * 0.707 // sqrt(2)/2
penUp
setHeading(45)
forward(diag)
penDown
setHeading(-90)
repeat(4) { forward(size); right }
penUp
setHeading(-135)
forward(diag)
}
def doSquares(level: Int, size: Int): Unit =
{
if (level == 0)
{
doSquare(size)
return
}
val s = size / 3
for (i <- -1 until 2)
{
for (j <- -1 until 2)
{
if (!(i == 0 & j == 0))
{
relativeJumpTo(s * i, s * j)
doSquares(level -1, s)
relativeJumpTo(-s * i, -s * j)
}
}
}
}
//doSquare(500)
doSquares(3, 500)