方向ベクトルと中心点間の距離
Posted: 2013年8月28日(水) 16:29
始めまして。
DXライブラリを使用しゲーム用の判定を作っているのですが、なかなか解決できないので、質問させていただきます。
2次元において、ある角度回転した四角形で衝突判定をするために中心点間の距離を取得する必要があるのですが
例えば次のような場合 ※説明用につくったので正確ではないです、ごめんなさい 中心点の距離を求める式として
fabs(VDot( VSub(A.Pos, B.Pos), L)) Lは方向ベクトル Posは座標用
このような式を
http://marupeke296.com/COL_3D_No13_OBBvsOBB.html (FLOAT Interval = の部分ですね)
こちらを参考にして作りました。
四角形の-45度回転したX軸における距離、という感じでしょうか。
しかし実際に動かしてみると-45度(0.71,-0.71)のとき、距離は約142と、期待した数値は出ませんでした。
そこでVSub(A.Pos, B.Pos)で出た値をもとに計算してみたところその通りで(-160*0.71)+(40*-0.71)= -142となります。
ここでふと気になったんですが、この二点でベクトルの引き算をした答を(-160,-40)とする方法(図でいう白い矢印)はないのでしょうか?
また、VSub(A.Pos, B.Pos)で出た値でそのまま意図した数値を出す方法があるのでしょうか。
もちろん手動でやってもいいのですが、三次元でも使う予定があり、そうなるとこのような計算をかなりの回数行うので、効率がいいようには思えませんし、なにより危険な気がします。
詳しい方居られましたら、教えていただきたいです。
DXライブラリを使用しゲーム用の判定を作っているのですが、なかなか解決できないので、質問させていただきます。
2次元において、ある角度回転した四角形で衝突判定をするために中心点間の距離を取得する必要があるのですが
例えば次のような場合 ※説明用につくったので正確ではないです、ごめんなさい 中心点の距離を求める式として
fabs(VDot( VSub(A.Pos, B.Pos), L)) Lは方向ベクトル Posは座標用
このような式を
http://marupeke296.com/COL_3D_No13_OBBvsOBB.html (FLOAT Interval = の部分ですね)
こちらを参考にして作りました。
四角形の-45度回転したX軸における距離、という感じでしょうか。
しかし実際に動かしてみると-45度(0.71,-0.71)のとき、距離は約142と、期待した数値は出ませんでした。
そこでVSub(A.Pos, B.Pos)で出た値をもとに計算してみたところその通りで(-160*0.71)+(40*-0.71)= -142となります。
ここでふと気になったんですが、この二点でベクトルの引き算をした答を(-160,-40)とする方法(図でいう白い矢印)はないのでしょうか?
また、VSub(A.Pos, B.Pos)で出た値でそのまま意図した数値を出す方法があるのでしょうか。
もちろん手動でやってもいいのですが、三次元でも使う予定があり、そうなるとこのような計算をかなりの回数行うので、効率がいいようには思えませんし、なにより危険な気がします。
詳しい方居られましたら、教えていただきたいです。