3Dグラフィックスのプリミティブ

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

Point[{x,y,z}]x, y, z の座標に点を打つ
Line[{{x1,y1,z1},{x2,y2,z2},}], , の各座標点を結ぶ折れ線を引く
Polygon[{{x1,y1,z1},{x2,y2,z2},}]
指定座標点が頂点の多角形を描画する (中は塗り潰す)
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]
対角座標で決まる直方体を描画する
Arrow[{pt1,pt2}] から を向いた矢印
Text[expr,{x,y,z}]テキストを座標点に表示する(「テキスト用グラフィックスプリミティブ」を参照のこと)

3Dグラフィックスの要素

3D座標を乱数で返す関数を定義しておく.
In[1]:=
Click for copyable input
3D空間の座標点を20個用意しておく.
In[2]:=
Click for copyable input
各座標に点を打つ.
In[3]:=
Click for copyable input
Out[3]=
10個のランダムな点を結ぶ折れ線を3Dでプロットする.
In[4]:=
Click for copyable input
Out[4]=

2Dグラフィックスではプロットする要素のリストを与えると,各要素が入力順に描画された.このため,後に描画した要素が先に描いたものを隠してしまうこともあった.これに対して,3Dでは,描画要求のあった全要素がまとめられ,立体オブジェクトとして一括で表示される.このため,投影角度によっては,前景にくる要素が背景にまわる要素を隠すことがある.

三組の乱数の3D座標を結ぶ三角形オブジェクトを返す関数を定義しておく.
In[5]:=
Click for copyable input
乱数による三角形を1つ描く.
In[6]:=
Click for copyable input
Out[6]=
乱数による三角形を5つまとめて作る.前の方にある三角形が後ろのものを隠すように表示される.
In[7]:=
Click for copyable input
Out[7]=

適当な形の多角形を適切に組み合せることでどんな形の立体オブジェクトでも構築できる.例えば,3Dパラメトリックプロット(ParametricPlot3D)で作った立体面はすべて多角形のリストからなるものである.

Point[{pt1,pt2,}], , における点から構成される多点
Line[{line1,line2,}], , から構成される多線
Polygon[{poly1,poly2,}]多角形 , , から構成される複数ポリゴン

複数要素をとることのできるプリミティブ

二次元プリミティブの場合と同様に,3Dグラフィックスプリミティブのなかにはより効率的な表現である多座標形式を持つものもある.非常に多数のプリミティブを扱う際に,可能な部分でこのような多座標形式を使うことにより,結果のグラフィックスのメモリ使用量を減らし,描画をずっと速くすることができる.

はランダムな三角形の座標だけを定義する.
In[8]:=
Click for copyable input
Polygonの多座標形式を使うことで,非常に多数の三角形を効率的に表現する.
In[9]:=
Click for copyable input
Out[9]=

Wolframシステムでは3Dの多角形に任意の設定でいくつの頂点でも持たせることができる.頂点の位置により,結果の多角形は一平面上あるいは一般的な凸でない可能性がある.一平面上ではない多角形を描画する場合は,Wolframシステムは描画する前に,その多角形を定義により平面的な三角形に分解する.

一平面的でない多角形は三角形に分解される.三角形を繋ぐ内部の辺は,Polygonプリミティブの外側の辺のように輪郭が描かれない.
In[10]:=
Click for copyable input
Out[10]=
自己交差の凸でない多角形は,各交差点で塗潰すか否かを交代に行う偶数奇数規則に従い塗り潰される.
In[11]:=
Click for copyable input
Out[11]=
Cone[{{x1,y1,z1},{x2,y2,z2}}]底辺の中心がで半径が1,頂点がの円錐
Cone[{{x1,y1,z1},{x2,y2,z2}},r]底辺の半径が r の円錐
Cuboid[{x,y,z}]対角が座標である単位立方体を作る
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]対角が指定座標にある直方体を作る
Cylinder[{{x1,y1,z1},{x2,y2,z2}}]終点がである半径1の円筒
Cylinder[{{x1,y1,z1},{x2,y2,z2}},r]半径 r の円筒
Sphere[{x,y,z}]中心の単位球
Sphere[{x,y,z},r]半径 r の球
Tube[{{x1,y1,z1},{x2,y2,z2},}]指定された点を繋ぐチューブ
Tube[{{x1,y1,z1},{x2,y2,z2},},r]半径 r のチューブ

直方体要素

3D空間に乱数座標からなる単位立方体と単位球を描画する.
In[12]:=
Click for copyable input
Out[12]=

ConeCylinderSphereTubeは高質の描画を生成するが,使用法はスケール可能である.1つの画像にこれらのプリミティブが何千も含まれることもある.それほど多くのプリミティブを描画するとき,デフォルトでConeCylinderSphereTubeを描画するために使われる点の数を変更する特殊なオプションを使うことにより,描画の効率を向上させることができる.Graphics3D Methodオプションはそれぞれの描画の質を低下させるのに使うことができる.円筒,球,チューブの質も同様にそれぞれを使って調整することができる.

円筒は非常に小さいので,それらを描画するために使われた多数の点はほとんど分からないように減らすことができる.
In[13]:=
Click for copyable input
Out[13]=