3次元正規変換

 

3次元座標系の種類

 

3次元のユーザー座標系は次のような種類があり, ユーザーはその中から関数番号によって 1 つを選択する.

番号  
1 直角座標
2 円筒座標
3 球座標

3 次元座標系は2 次元座標系と異なり対数軸の指定は関数番号ではなく, 対数スイッチ (後述) によって指定する.

 

3次元正規変換パラメタ

 

上記の3次元ユーザー座標を3次元正規座標に変換する正規変換に必要なパラメータには 以下のものがある. これらは内部変数を管理するルーチンDclSetParm/DclGetParmにより 一つずつ設定/参照できるが, 同種のパラメータをまとめて設定するユーティリティーが用意されている.

ビューポート

( VXMIN3, VXMAX3, VYMIN3, VYMAX3, VZMIN3, VZMAX3 )
直角直線座標 (ITR=1) の変換に必要なパラメタで, ウィンドのパラメタと共に指定する. 2次元のビューポートと異なり クリッピングの範囲とは関係がない.


これらのパラメータは DclSet3dViewport/DclGet3dViewport によって 設定/参照できる.

ウインドウ

( UXMIN3, UXMAX3, UYMIN3, UYMAX3, UZMIN3, UZMAX3 )
ITR=1 の時, ビューポートに対応する座標値をユーザー座標系の値で指定する.


これらのパラメータは DclSet3DWindow/DclSet3DWindow によって 設定/参照できる.

対数スイッチ

( LXLOG3, LYLOG3, LZLOG3 )
ITR=1 の時, それぞれの軸を対数にしたいときに, .TRUE. にする.


これらのパラメータは DclSet3DLogAxis/DclGet3DLogAxis によって 設定/参照できる.

相似変換パラメタ

( SIMFAC3, VXORG3, VYORG3, VZORG3)
円筒座標と球座標の時に指定する 相似変換 (拡大縮小と原点移動) のパラメタ. 座標原点を(VXORG3, VYORG3, VZORG3) に設定する.


これらのパラメータは DclSet3DOrigin/DclGet3DOrigin によって 設定/参照できる.


3次元のユーザー座標系で描画するためには, 2次元座標系と同様 DclNewFrame を呼んだ後でかつ描画をはじめる前に 変換関数を決めるパラメータを指定しておかなければならない. これらのパラメタの値は, 変換関数を確定するルーチン DclSet3DTransFunction を呼ぶことで有効になる. 3次元のパラメタは2次元のパラメタとは独立である.

主要なパラメタはすべて DclSetParm/DclGetParmによって管理されているが, 変換関数のパラメタを1つ1つ設定するのは面倒なので, まとめてパラメタを設定するルーチンが用意されており, 普通はそちらを使ってパラメタの設定を行なう.


具体的に変換パラメタを設定するにはDclNewFrame のあとで次のように コーディングする.

直角座標系

 
       call DclSet3dViewport(vxmin3, vxmax3, vymin3, vymax3, vzmin3, vzmax3)
       call DclSet3dWindow(uxmin3, uxmax3, uymin3, uymax3, uzmin3, uzmax3)
       call DclSetTransNumber(itr3)
       call DclSetTransFunction

円筒座標, 球座標

       call DclSet3dOrigin(sfac3, vxorg3, vyorg3, vzorg3)
       call DclSetTransNumber(itr3)
       call DclSetTransFunction

 

関連項目