|
2.10.8 3Dグラフィックスのプリミティブ
Mathematicaのグラフィックス機能をさらに強力にするものに3Dグラフィックスがある.3Dグラフィックスのプリミティブを組み合せることで立体オブジェクトを描画することが可能になる.

3Dグラフィックスの要素
3D座標を乱数で返す関数 rcoordを定義しておく.
In[1]:= rcoord := {Random[ ], Random[ ], Random[ ]}
3D空間の座標点を20個用意しておく.
In[2]:= pts = Table[Point[rcoord], {20}] ;
各座標に点を打つ.
In[3]:= Show[ Graphics3D[ pts ] ]

Out[3]= 
10個のランダムな点を結ぶ折れ線を3Dプロットする.
In[4]:= Show[ Graphics3D[ Line[ Table[rcoord, {10}] ] ] ]

Out[4]= 
2Dグラフィックスではプロットする要素のリストを与えると,各要素が入力順に描画された.このため,後に描画した要素が先に描いたものを隠してしまうこともあった.これに対して,3Dでは,描画要求のあった全要素がまとめられ,立体オブジェクトとして一括で表示される.このため,投影角度によっては,前景にくる要素が背景にまわる要素を隠すことがある.
3組の乱数の3D座標を結ぶ三角形オブジェクトを返す関数 rantriを定義して おく.
In[5]:= rantri := Polygon[ Table[ rcoord, {3} ] ]
乱数による三角形を1つ描く.
In[6]:= Show[ Graphics3D[ rantri ] ]

Out[6]= 
乱数による三角形を5つまとめて作る.前の方にある三角形が後ろのものを隠すように表示される.
In[7]:= Show[ Graphics3D[ Table[rantri, {5}] ] ]

Out[7]= 
適当な形の多角形を適切に組み合せることでどんな形の立体オブジェクトでも構築できる.例えば,3Dパラメトリックプロット(ParametricPlot3D)で作った立体面はすべて多角形のリストからなるものである.
Graphics`Polyhedra`パッケージには多角形の集合から作った3Dの多面体の例がいろいろあるので参考にするとよい.
多面体作成用のパッケージを読み込ませる.
In[8]:= <<Graphics`Polyhedra`
四面体の内容を参照する.中心が原点で,オブジェクト自体は多面体のリストからなっている.
In[9]:= Tetrahedron[ ]
Out[9]= 
四面体を実際に表示してみる.
In[10]:= Show[ Graphics3D[ % ] ]

Out[10]= 
Polyhedraパッケージに定義されてい るもう1つの3Dオブジェクト12面 体 (Dodecahedron[ ])を見てみよう.
In[11]:= Show[ Graphics3D[ Dodecahedron[ ] ] ]

Out[11]= 
12面体を4つ作り,交差しあった状態で表示する.
In[12]:= Show[ Graphics3D[ Table[Dodecahedron[0.8 {k, k, k}], {k, 0, 3}] ] ]

Out[12]= 
3Dにおける多角形はいくつ頂点を持っていても構わない.ただし,すべての頂点は単一平面上にあり,また,角は凸状の形でなければいけない.これが守られていないときは,描画する前に多角形が自動的に三角形(定義上,三角形の全頂点は単一平面にある)に分解されてしまうので注意する.

直方体要素
乱数座標からなる単位立方体を20個作り表示する.
In[13]:= Show[Graphics3D[ Table[Cuboid[10 rcoord], {20}] ]]

Out[13]= 
|