可視化手法 | ![]() ![]() |
例題 - 立方体の定義
立方体は、6面を形成する8つの頂点で定義されます。つぎの図は、単位長の辺から構成される立方体を定義する頂点の座標を示します。
X, Y, Z 座標の指定
6つの各面には4つの頂点があります。各多角形は閉じる必要がないので(すなわち、最初と最後の頂点は同じである必要がないので)、x、y、z 座標のそれぞれについて、4行6列の行列を使って、この立方体を定義することができます。
行列の各列は、異なる面を指定します。頂点は8つしかありませんが、6面すべてを定義するためには24の頂点を指定しなければなりません。各面は他の4つの面と頂点を共有するので、各頂点を一度だけ定義し、各面を形成するためにこれらの頂点を結合する順序を指定することによって、より効率的にpatchを定義することができます。patchの Vertices
および Faces
プロパティは、この方法にて、patchを定義します。
面と頂点の指定
つぎの行列は、Vertices
と Faces
を使って、立方体を指定します。
patchが多くの面を含む場合、頂点と面を指定する方法を用いると、コンピュータのかなりのメモリ量を節約することができます。この方法は、関数 patch
の正式なシンタックスを使って、Vertices
および Faces
プロパティに明示的に値を割り当てる必要があります。たとえば、
patch('Vertices',vertex_matrix,'Faces',faces_matrix)
正式なシンタックスは、面やエッジの色を自動的に割り当てないので、デフォルトの白色の面と黒色のエッジ以外の色でpatchを作成するために、適切なプロパティを設定しなければなりません。
面にフラットなカラーリング
フラットな面の色は、各面に1つの色を指定した結果得られます。たとえば、つぎのステートメントは、色を定義するために頂点と面を指定する方法と、FaceVertexCData
プロパティを使って、各面に1つの色を指定し、FaceColor
プロパティを flat
に設定します。
patch('Vertices',vertex_matrix,'Faces',faces_matrix,...
'FaceVertexCData
',hsv(6),'FaceColor','flat')
FaceVertexCData
プロパティで指定したトゥルーカラーは、MATLABのカラーマップと同じ書式(すなわち、RGB値のn 行3列配列)なので、この例題では、hsv
カラーマップを使って、flatシェーディングに必要な6色を生成します。
面の色を補間する方法
面の色を補間する方法は、各面の頂点の色がある頂点からつぎの頂点までの色の変移を定義することを意味します。頂点間で色を補間するためには、頂点ごとに色を指定し、FaceColor
プロパティを interp
に設定しなければなりません。
patch('Vertices',vertex_matrix,'Faces',faces_matrix,...
'FaceVertexCData
',hsv(8),'FaceColor','interp')
view(3); axis square
は、各面を頂点の色をもとに補間することによってカラーリングした立方体を生成します。
x, y, z, c を設定する方法を使って同じカラーリングを指定するためには、cはm x n x 3 配列でなければなりません。ここで、x, y, zの次元はm x n です。
つぎの図は、FaceVertexCData
と CData
プロパティの対応を示したものです。
カラーリング手法の詳細は、"patchのカラーリングの指定" を参照してください。
![]() | 複数の面をもつpatch | patchのカラーリングの指定 | ![]() |