gluUnProject(3) ウィンドウ座標をオブジェクト座標にマップする

書式

GLint gluUnProject( GLdouble winX,


GLdouble winY,
GLdouble winZ,
const GLdouble *model,
const GLdouble *proj,
const GLint *view,
GLdouble* objX,
GLdouble* objY,
GLdouble* objZ )

delim $$

引き数

winX, winY, winZ
マップされるウィンドウ座標を指定する。
model
モデルビュー行列を指定する(glGetDoublev の呼び出しで得られる形式)。
proj
射影行列を指定する(glGetDoublev の呼び出しで得られる形式)。
view
ビューポートを指定する(glGetIntegerv の呼び出しで得られる形式)。
objX, objY, objZ
算出されたオブジェクト座標が返される。

説明

gluUnProject は、model, proj, view を使って、 指定されたウィンドウ座標をオブジェクト座標にマップする。 マップされた結果は objX, objY, objZ に格納される。 返り値が GL_TRUE なら成功を示し、返り値が GL_FALSE なら 失敗を示す。

座標 (objX, objY, objZ) を計算するために、 gluUnProject は正規化されたデバイス座標に model*proj の逆行列を掛ける。 計算は以下のように行われる:


left ( down 70 {cpile { ~"objX" above ~"objY" above ~"objZ" above ~W}} ~~ right ) ~=~ INV(P M) left ( down 140 {cpile { { {2("winX" ~-~ "view"[0])} over {"view" [2]} ~-~ 1 } above { {2("winY" ~-~ "view"[1])} over {"view"[3]} ~-~ 1 } above { 2("winZ") ~-~ 1 } above 1}} ~~ right ) $INV()$ は逆行列の計算を表す。 W は使われない変数であり、行列の表記に一貫性を持たせるために含めている。