視界(viewing)

viewingオブジェクトは、viewing座標系を処理する。 この座標系の原点は仮想カメラの位置に置かれる。 -z軸方向がオブジェクトの視線方向で、xy平面が投影画面である。 viewingcascaded-coordsクラスを継承するので、 :translate:rotate:transformのような 座標変換メッセージを受け付ける。 また、cascaded-coordsから得られる他のオブジェクトを張り付けることができる。 したがって、移動物体上のカメラシステムのシミュレーションができる。 viewingの主な目的は、ワールド座標系で表現されるベクトルを カメラ座標系に変換することである。 変換は、一般の座標変換に対して逆方向で与えられる。 このローカル座標系内のベクトルはワールド座標系における表現に変換される。 したがって、viewingviewcoordsスロットに逆変換された左手系変換を持つ。 このスロットは、viewing座標系として普通参照される。

Figure: viewing座標系と投影画面
\begin{figure}\begin{center}
\epsfile{file=fig/viewcoords.ps,height=10cm}
\end{center}
\end{figure}




viewing [クラス]


  :super   cascaded-coords 

:slots (viewcoords)


viewing変換を定義する。


:viewpoint [メソッド]

このviewingの原点のベクトル位置を返す。


:view-direction [メソッド]

viewingの原点から画面の中心までのベクトルを返す。 これは、viewing座標系のz軸方向である。


:view-up [メソッド]

ワールド座標系におけるこのviewingのy軸ベクトルを返す。 y軸は、viewportの上方である。


:view-right [メソッド]
ワールド座標系におけるこのviewingのx軸ベクトルを返す。 x軸は、viewportの水平右方向である。


:look from &optional (to #f(0 0 0)) [メソッド]

:lookは、その目がfromに位置されており、toの位置を 見ているとしてviewing座標系を設定する。



\begin{emtabbing}
{\bf :init}
\it
\&key \= :target \hspace{12mm} \= \char93 f(0...
... 1.0)) \\
\> :view-right \> nil \\
\> \&allow-other-keys
\rm
\end{emtabbing}

viewingは、cascaded-coordsを継承するので、:pos:rot:euler:rpyなどの:initのパラメータはすべてviewing座標系の位置や姿勢を 指定することに使用できる。 しかしながら、viewingの:initは回転を決定する簡単な方法を持っている。 もし、:targetだけが与えられたとき、視線方向は視点からtarget位置 の方向に決定され、:view-rightベクトルはワールド座標系のxy平面に平行な x軸に決定される。 :view-direction:targetの代わりに指定しても同じ様な 効果を得られる。 もし、:view-upまたは:view-rightパラメータを:targetあるいは :view-directionに加えて指定するならば、3つの回転パラメータをすべて 自分自身で決定することができる。




2016-04-05