TIM Labs

Sierpinskiの三角形(6)

| コメント(0) | トラックバック(0)
Sierpinskiの三角形を乱数フラクタルで描いた。でも、これは2次元である。今回は、3次元に拡張しよう。

前回のプログラムから3次元へは自然に拡張できる。
3次元に拡張したので、三角形が四角錐になる。ここでは、各辺の長さが同じの正四面体になるように、(0,0,0),(0,1,1),(1,0,1),(1,1,0)の4点を頂点として与えた。

まず、プログラムを示す。
num = input("How many points: ");
V = [ 0,0,0; 0,1,1; 1,0,1; 1,1,0 ];

P = [0,0,0];
X(1) = P(1);
Y(1) = P(2);
Z(1) = P(3);
for i = 2:num
    Q = V(randi(4),:);
    P = (P + Q)/2;
    X(i) = P(1);
    Y(i) = P(2);
    Z(i) = P(3);
endfor

plot3(X,Y,Z,".")

title( sprintf("Sierpinski pyramid, num=%d",num) )

1万点で描かせると、こういう風になる。
sierpinski100003d-1.png
これだと、一辺1の正方形に点がランダムに散らばっているだけに見える。
でも、ちょっと視点を移動すると、点が立体的に散らばっていることが分かる。

sierpinski100003d-2.png
さらに視点を移動していくと、Sierpinskiの三角形が見えてくる。

sierpinski100003d-3.png
sierpinski100003d-4.png
3次元図形は、結果を画像で見ても全然面白くない。マウスをグリグリすることで、見る方向がどんどん変わり、3次元を体感することがとても重要だ。ぜひ、Octave なり、MatLabを使ってみよう。

さて、何枚もの正四面体の図を示した。なので、もう一辺の長さが1の正四面体の面積の計算は簡単にできるようになったと思う。
個々で示した図には、横着(エレガント)な計算方法が示されている。この性質を利用した正四面体の体積計算は中学入試で出てくることもある。正四面体の底面積求めて高さを求めて体積を求めるとうい面倒なことは止めて、暗算可能な方法で教えよう。
詳しいことはネットにいっぱい説明があるので、自分で探そう。

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/524

コメントする

このブログ記事について

このページは、fujiが2016年10月28日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Sierpinskiの三角形(5)」です。

次のブログ記事は「書評:『ゼロから作る Deep Learning』」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。