Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

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

Mathematica のグラフィックス機能をさらに強力にするものに3Dグラフィックスがある.3Dグラフィックスのプリミティブを組み合せることで立体オブジェクトを描画することが可能になる.
Point[{x,y,z}]x, y, z の座標に点を打つ
Line[{{x1,y1,z1},{x2,y2,z2},...}]{x1, y1, z1}, {x2, y2, z2}, ...の各座標点を結ぶ折れ線を引く
Polygon[{{x1,y1,z1},{x2,y2,z2},...}]
指定座標点が頂点の多角形を描画する (中は塗り潰す)
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]
対角座標で決まる直方体を描画する
Text[expr,{x,y,z}]テキストを座標点 {x, y, z}に表示する(「テキスト用グラフィックスプリミティブ」を参照のこと)

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

3D座標を乱数で返す関数rcoordを定義しておく.
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では,描画要求のあった全要素がまとめられ,立体オブジェクトとして一括で表示される.このため,投影角度によっては,前景にくる要素が背景にまわる要素を隠すことがある.
3組の乱数の3D座標を結ぶ三角形オブジェクトを返す関数rantriを定義しておく.
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,...}]pt1, pt2, ...における点から構成される多点
Line[{line1,line2,...}]line1, line2, ...殻構成される多線
Polygon[{poly1,poly2,...}]多角形poly1, poly2, ...から構成される複数ポリゴン

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

2次元プリミティブの場合と同様に,3Dグラフィックスプリミティブのなかにはより効率的な表現である多座標形式を持つものもある.非常に多数のプリミティブを扱う際に,可能な部分でこのような多座標形式を使うことにより,結果のグラフィックスのメモリ使用量を減らし,描画をずっと速くすることができる.
rantricoordsはランダムな三角形の座標だけを定義する.
In[8]:=
Click for copyable input
Polygonの多座標形式を使うことで,非常に多数の三角形を効率的に表現する.
In[9]:=
Click for copyable input
Out[9]=
Mathematica では3Dの多角形に任意の設定でいくつの頂点でも持たせることができる.頂点の位置により,結果の多角形は一平面上あるいは一般的な凸でない可能性がある.一平面上ではない多角形を描画する場合は,Mathematica は描画する前に,その多角形を定義により平面的な三角形に分解する.
一平面的でない多角形は三角形に分解される.三角形を繋ぐ内部の辺は,Polygonプリミティブの外側の辺のように輪郭が描かれない.
In[10]:=
Click for copyable input
Out[10]=
自己交差の凸でない多角形は,各交差点で塗潰しか否かを交代に行う偶数奇数規則に従い塗り潰される.
In[11]:=
Click for copyable input
Out[11]=
Cuboid[{x,y,z}]対角が座標{x, y, z}{x+1, y+1, z+1}である単位立方体を作る
Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]対角が指定座標にある直方体を作る
Cylinder[{x1,y1,z1},{x2,y2,z2}]終点が{x1, y1, z1}{x2, y2, z2}である半径1の円筒
Cylinder[{x1,y1,z1},{x2,y2,z2},r]半径r の円筒
Sphere[{x,y,z}]中心{x, y, z}の単位球
Sphere[{x,y,z},r]半径r の球

直方体要素

3D空間に乱数座標からなる単位立方体と単位球を描画する.
In[12]:=
Click for copyable input
Out[12]=
CylinderSphereは高質の描画を生成するが,使用法はスケール可能である.1つの画像にこれらのプリミティブが何千も含まれることもある.それほど多くのプリミティブを描画するとき,デフォルトでCylinderSphereを描画するために使われる点の数を変更する特殊なオプションを使うことにより,描画の効率を向上させることができる.Graphics3D"CylinderPoints" Methodオプションは各円筒の描画の質を低下させるのに使うことができる.球の画質も同様に"SpherePoints"を使って調整することができる.
円筒は非常に小さいので,それらを描画するために使われた多数の点はほとんど分からないように減らすことができる.
In[13]:=
Click for copyable input
Out[13]=
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team