- ベストアンサー
ベクトルの変換について
あるベクトルのうち、特定の向きの力だけを減らしたベクトルを計算したいのですが、どうすればできるでしょうか? 2Dベクトルです。 0度、90度の向きの力を減らすのであればx、y要素を演算するだけでいいのかと思うんですが、それ以外の角度の方法がわかりません。 またゲームのプログラムで使うので、数学的でなくとも計算できれば構いません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ベクトル A=(a,b) というのは、 Ex=(1,0), Ey=(0,1)というx,y方向の単位ベクトルがあると A=a Ex + b Ey とベクトルを合成したものです。 このx成分をr倍する、というのは A'=(r a , b) = r a Ex + b Ey とすることです。 これを ベクトルV(|V|=1)の方向と、Vと垂直な単位ベクトルUと使って A=a Ex + b Ey = a' V + b' U となるようにa',b'を計算して、V方向をr倍して A' = r a' V + b' U あるいは。 ベクトルVの角度がθだとすれば、A を-θ回転させた Arot(-θ)のx成分がV方向に相当する。 そこで、 Arot(-θ) のxをr倍すれば、V方向に変化させたことになる。 あとは、+θ回転させもとの角度に戻す。 どちらも、結局は同じ式が出てくるはずです。
その他の回答 (2)
- spring135
- ベストアンサー率44% (1487/3332)
単なるベクトルA↑、B↑の引き算を実行すればよいのではありませんか。 A↑=(ax,ay)、B↑=(bx,by) C↑=A↑-B↑=(ax-bx,ay-by)=(cx,cy) cx=ax-bx, cy=ay-by
補足
ある向きの量を減らす、というのならそれでいいのですが、ある向きの量を乗算する、という風の事がやりたいのです。
- ONEONE
- ベストアンサー率48% (279/575)
0度、90度の向きに分解して減らせば良いです。 元あるベクトルをA, x軸となす角度をθ、絶対値がrのベクトルをV としたとき B = A - V Bx = Ax - r cosθ By = Ay - r sinθ となります。sin, cosがわからなければ、「三角比」を検索してみてください。 参考 http://wakariyasui.sakura.ne.jp/p/mech/tikara/gousei.html
補足
説明が足りませんでした。ごめんなさい。 「減らす」というのはある量を減算するということではなく0.0~1.0の値を掛け算して減らしたい、ということです。
お礼
なるほど、そうすればいいのですね。 さらに違う方法も書いてくれてありがとうございます。