09/09/05 17:55:31 EeU98UBA
>>503
ごめんなさい。説明が少しわかりにくかったですね。sqrtを使った式をそのまま使ってしまったんですね。
もっと丁寧に説明してみます。
E3DVec3Length命令の中では、HSP風に計算式を書くと
length = sqrt(vecx*vecx + vecy*vecy + vecz*vecz)
という計算式を使って計算しています。実際には、DirectX(のD3DXVec3Length)を使ってハードウェアに計算を投げていると思いますが使っている式は同じです。
ですので、例えばveczを0.0にして計算するということは、
length = sqrt(vecx*vecx + vecy*vecy)
という式を使っていることと同じ意味になります。この式は2次元ベクトルの長さ(距離)を求める式と同じですね。(数学の教科書参照)
つまり、1行目で書いたとおり、引数のどれか一つに0.0を指定し、残り2つの引数を使って計算してください。
例えば座標(0,0)から座標(vecx, vecy)までの距離を求めたいときは、
E3DVec3Length vecx, vecy, 0.0, length
とすれば、lengthに答えが代入されます。これなら重くなることなく同じ時間で計算できますね。
それでもどうしても速度を追求したいのであれば、D3DXVec2LengthをE3Dでも実装してもらえるようお願いしてはどうでしょう。
よほどたくさん使わない限り微々たる物だと思いますが。