DirectX9を使ってプログラミングをしています。
タイトルのD3DXVec3TransformCoord関数なのですが、MSDNの説明では2つ目の引数に
[in] 処理の基になる D3DXVECTOR3 構造体へのポインタ。
と書いてあるのですが要するに何を入れればいいのですか?
行列をベクトルに変換する関数だと思うのですが行列を入力すればベクトルは出てくると思うのですが...
そう考えると引数として最低必要なのは行列だけな気がします。
分かる方教えてください。
MSDN-D3DXVec3TransformCoord
http://msdn.microsoft.com/ja-jp/library/cc372970.aspx
D3DXVec3TransformCoord関数などについて
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: D3DXVec3TransformCoord関数などについて
行列とベクトルは同じものではないので、行列からベクトルは求められません。
この関数は入力ベクトルをトランスフォームして、正規化したベクトルを得る関数です。[修正]失礼しました。間違っていた様なので修正です。
で、どんな入力ベクトルを与えるべきかはyucky001さんが知っているはずですよ。D3DXVec3TransformCoordを使って得たいベクトルはなんなのでしょうか?
この関数は入力ベクトルをトランスフォームして、正規化したベクトルを得る関数です。[修正]失礼しました。間違っていた様なので修正です。
で、どんな入力ベクトルを与えるべきかはyucky001さんが知っているはずですよ。D3DXVec3TransformCoordを使って得たいベクトルはなんなのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: D3DXVec3TransformCoord関数などについて
D3DXVec3TransformCoordは、3次元ベクトルに4x4の行列を掛け算する関数です。
なので入力ベクトル、出力ベクトル、行列の3つが必要なのです。
3要素のベクトルに4x4行列はかけられないので、D3DXVECTOR4(x,y,z,1)として掛け算を行います。
仮にD3DXVECTOR4(x,y,z,0)としてトラスフォームするD3DXVec3TransformNormalの場合は、行列の平行移動成分は無視されます。
また、この関数は正規化を行いません。注意が必要かと思います。
ベクトルを正規化したい場合は、D3DXVec3Normalizeを用いてください。
なので入力ベクトル、出力ベクトル、行列の3つが必要なのです。
3要素のベクトルに4x4行列はかけられないので、D3DXVECTOR4(x,y,z,1)として掛け算を行います。
仮にD3DXVECTOR4(x,y,z,0)としてトラスフォームするD3DXVec3TransformNormalの場合は、行列の平行移動成分は無視されます。
また、この関数は正規化を行いません。注意が必要かと思います。
ベクトルを正規化したい場合は、D3DXVec3Normalizeを用いてください。
Re: D3DXVec3TransformCoord関数などについて
softyaさん、うしおさん、ありがとうございます。
D3DXVec3TransformCoordは、3次元ベクトルに4x4の行列を掛け算する関数だったんですね。
2つ目の引数も分かりました。
ありがとうございました。
D3DXVec3TransformCoordは、3次元ベクトルに4x4の行列を掛け算する関数だったんですね。
2つ目の引数も分かりました。
ありがとうございました。