シェルピンスキーのギャスケットを再帰を利用して描画。
そのままではつまらないので3D表示に。#include "d3m.hsp"
#module Gasket
#deffunc drawGasket double x1, double y1, double x2, double y2, double x3, double y3, int count
// X-Y平面上にシェルピンスキーのギャスケットを描く
if count {
drawGasket x1, y1, (x1 + x2)/2, (y1 + y2)/2, (x1 + x3)/2, (y1 + y3)/2, count - 1
drawGasket x2, y2, (x1 + x2)/2, (y1 + y2)/2, (x2 + x3)/2, (y2 + y3)/2, count - 1
drawGasket x3, y3, (x1 + x3)/2, (y1 + y3)/2, (x2 + x3)/2, (y2 + y3)/2, count - 1
} else {
d3initlineto
d3lineto x1, y1, 0
d3lineto x2, y2, 0
d3lineto x3, y3, 0
d3lineto x1, y1, 0
}
return
#global
redraw 0
d3setcam -30, -40, 90, 50, 43, 0
color : boxf
color 0, 128
drawGasket 0, 0, 100, 0, cos(3.14/3) * 100, sin(3.14/3) * 100, 4
redraw 1
stop
2007年5月22日火曜日
シェルピンスキーのギャスケット
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿