D3DXVec3TransformCoord関数などについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
fulls
記事: 72
登録日時: 14年前
住所: 埼玉

D3DXVec3TransformCoord関数などについて

#1

投稿記事 by fulls » 14年前

DirectX9を使ってプログラミングをしています。
タイトルのD3DXVec3TransformCoord関数なのですが、MSDNの説明では2つ目の引数に

[in] 処理の基になる D3DXVECTOR3 構造体へのポインタ。

と書いてあるのですが要するに何を入れればいいのですか?
行列をベクトルに変換する関数だと思うのですが行列を入力すればベクトルは出てくると思うのですが...
そう考えると引数として最低必要なのは行列だけな気がします。

分かる方教えてください。

MSDN-D3DXVec3TransformCoord
http://msdn.microsoft.com/ja-jp/library/cc372970.aspx

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: D3DXVec3TransformCoord関数などについて

#2

投稿記事 by softya(ソフト屋) » 14年前

行列とベクトルは同じものではないので、行列からベクトルは求められません。
この関数は入力ベクトルをトランスフォームして、正規化したベクトルを得る関数です。[修正]失礼しました。間違っていた様なので修正です。

で、どんな入力ベクトルを与えるべきかはyucky001さんが知っているはずですよ。D3DXVec3TransformCoordを使って得たいベクトルはなんなのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
うしお
記事: 56
登録日時: 14年前

Re: D3DXVec3TransformCoord関数などについて

#3

投稿記事 by うしお » 14年前

D3DXVec3TransformCoordは、3次元ベクトルに4x4の行列を掛け算する関数です。
なので入力ベクトル、出力ベクトル、行列の3つが必要なのです。

3要素のベクトルに4x4行列はかけられないので、D3DXVECTOR4(x,y,z,1)として掛け算を行います。
仮にD3DXVECTOR4(x,y,z,0)としてトラスフォームするD3DXVec3TransformNormalの場合は、行列の平行移動成分は無視されます。

また、この関数は正規化を行いません。注意が必要かと思います。
ベクトルを正規化したい場合は、D3DXVec3Normalizeを用いてください。

fulls
記事: 72
登録日時: 14年前
住所: 埼玉

Re: D3DXVec3TransformCoord関数などについて

#4

投稿記事 by fulls » 14年前

softyaさん、うしおさん、ありがとうございます。
D3DXVec3TransformCoordは、3次元ベクトルに4x4の行列を掛け算する関数だったんですね。
2つ目の引数も分かりました。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る