Kuin Advent Calendar 2016 - 19日目

この記事は【Kuin Advent Calendar 2016】の19日目の記事です。

←前の日の記事   →次の日の記事

【記事中で紹介しているコードについて】
コンパイルが通らない場合など、不具合があれば、@tatt61880まで連絡いただけると助かります。よろしくお願いいたします。


シェルピンスキーのカーペットを表示するKuinのコードです。
[Image:sierpinski_carpet.kn.png]
sierpinski_carpet.kn
{ 
	再起的な描画でシェルピンスキーのカーペットを表示します。
	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


←前の日の記事   →次の日の記事