世界座標系からコンピュータのモニターの座標系に変換する機能は、MATLAB にはありません。
VIEW や VIEWMTX 関数は、"ビュー変換" 行列を出力します。この行列は、世界座標系での座標点をコンピュータ上での座標系に変換するためには用いることはできません。
理由は次の通りです。
"視点変換" は、世界座標から モニター/スクリーン座標 への変換機能の一部です。
ピクセルを世界座標系から変換するには、以下の変換行列の掛け算を用います。
ビューポート変換行列 (viewport transform matrix)
射影変換行列 (projection transform matrix)
ビュー変換行列 (view transform matrix)
正規化変換行列 (normalizing transform matrix)
モデリング変換行列 (model transform matrices)
正規化変換 が欠落しています。 正規化変換行列 N は、以下のようなものです。
xl=get(gca,'xlim');
yl=get(gca,'ylim');
zl=get(gca,'zlim');
N=[1/(xl(2)-xl(1)) 0 0 0; ...
0 1/(yl(2)-yl(1)) 0 0; ...
0 0 1/(zl(2)-zl(1)) 0; ...
0 0 0 1];
(座標軸の範囲に基づいた)正規化変換を使用することで、以下のように計算することができます。
A=view;
A = A*N;
このように、行列 A は、前後点をスクリーン上の同じ位置に変換させることができます。
ただし、残りの行列は考慮されていないため、これは正しい位置ではありません。これらの行列は、MATALB 関数で計算されたものではなく、また座標軸データから直接アクセスされたものでもありません。これらは情報目的のために記載されています。
ビューポート変換は、単純にウィンドウサイズです。ウィンドウがどこにあるか、または正方形ではない長方形かによって計算することができます。
この場合の射影変換は、単純に一様なスケールファクターですが、斜視図の場合はかなり複雑になります。
モデリング変換は、HGTRANSFORM オブジェクトの行列プロパティです。