Main Content

投影法について

2 つのタイプの投影法

MATLAB® は 3 次元グラフィックスを表示するため、正投影と遠近投影の 2 つのタイプをサポートしています。選択した投影法は、表示するグラフィックスのタイプに依存します。

  • orthographic は、直方体 (すなわち、向かい合う辺が平行な箱) として表示ボリュームを投影します。カメラの相対的な距離は、オブジェクトのサイズに影響しません。この投影タイプは、オブジェクトの実際のサイズとオブジェクト間の角度を維持するのが重要な場合に有効です。

  • perspective は、角錐台 (頂点が底面と平行に切断された角錐) として表示ボリュームを投影します。距離は遠近法を使用して描かれます。すなわち、カメラから遠いオブジェクトは小さく見えます。この投影法は、実物の現実的な表示を行う場合に有用です。

既定の設定では、MATLAB は正投影を使用してオブジェクトを表示します。camproj コマンドを使用して、投影タイプを設定することができます。

次の図は、(patch を使用して作成した) ダンプカーの描画と、数学的な関数の表面プロットを正投影を使用して示しています。

ダンプカーを包み込む箱の前面と後面の幅を測定すると、サイズは同じであることがわかります。この図は、奥行きのある実物を見ると感じられる遠近性がないので、不自然に見えます。これに対して、表面プロットは四角形空間内部の関数値を正確に示しています。

ここで、遠近性を付加して同じオブジェクトのグラフィックス表示を見てみます。遠くの部分が小さく見えるため、ダンプカーの表示がより自然になります。この投影法は、人の視覚がどのように機能するかをまねたものです。これに対して表面プロットは歪んで見えます。

投影法のタイプとカメラの位置

既定の設定では、MATLAB は CameraPositionCameraTargetCameraViewAngle プロパティを調整して、カメラをシーンの中央に向け、座標軸内にあるすべてのグラフィックス オブジェクトを含めるようにします。カメラの背後にグラフィックス オブジェクトが来るようにカメラの位置を調整すると、表示されるシーンは座標軸の Projection プロパティと Figure の Renderer プロパティの両方による影響を受ける可能性があります。次の表は、投影法のタイプとレンダリング手法の相互関係を要約したものです。

 

正投影法

遠近投影法

OpenGL®

CameraViewAngle により CameraTarget における場面の範囲を決めます。

CameraViewAngle により CameraPosition から無限遠点までの場面の範囲を決めます。

Painters

CameraPosition に関係なく、すべてのオブジェクトを表示します。

グラフィックス オブジェクトが CameraPosition の背後にある場合は推奨しません。

次の図は、正投影法と OpenGL を使用する際に見える対象 (グレー領域) を示しています。カメラの前にあるものはすべて見えます。

遠近法では、カメラの視点角度の範囲内のものしか見ることはできません。

MATLAB は表示軸に沿って切り取ることはしないので、Painters レンダリング技法は 3 次元空間でカメラを移動するのにあまり適していません。Painters 技法における正投影では、シーンに含まれるすべてのオブジェクトがカメラの位置に関わらず可視です。

3 次元シーンの印刷

前節で説明した同じ効果がハードコピー出力でも起こります。スクリーン上に表示された結果を得るには、明示的に OpenGL の印刷を指定しなければなりません (print コマンドで -opengl オプションを使用します)。