この記事は【Kuin Advent Calendar 2016】の19日目の記事です。
【記事中で紹介しているコードについて】
コンパイルが通らない場合など、不具合があれば、@tatt61880まで連絡いただけると助かります。よろしくお願いいたします。
{
再起的な描画でシェルピンスキーのカーペットを表示します。
Wacław Franciszek Sierpiński - 1919
}
func main()
const size: int :: 600
var wndMain: wnd@Wnd :: wnd@makeWnd(null, %aspect, size, size, "Sierpinski carpet")
var drawMain: wnd@Draw :: wnd@makeDraw(wndMain, 0, 0, size, size, %scale, %scale, false)
while(wnd@act())
do draw@rect(0.0, 0.0, size $ float, size $ float, 0xFF000000)
do @void(0.0, 0.0, size $ float / 3.0 $ float)
do draw@render(60)
end while
end func
func void(x : float, y : float, size : float)
do draw@rect(x + size, y + size, size, size, 0xFFFFFFFF)
if(size > 3.0)
for i(0, 2)
for j(0, 2)
if(i * j <> 1)
do @void(x + size * i $ float, y + size * j $ float, size / 3.0)
end if
end for
end for
end if
end func