• ベストアンサー

ベクトルの変換について

あるベクトルのうち、特定の向きの力だけを減らしたベクトルを計算したいのですが、どうすればできるでしょうか? 2Dベクトルです。 0度、90度の向きの力を減らすのであればx、y要素を演算するだけでいいのかと思うんですが、それ以外の角度の方法がわかりません。 またゲームのプログラムで使うので、数学的でなくとも計算できれば構いません。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.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方向に変化させたことになる。 あとは、+θ回転させもとの角度に戻す。 どちらも、結局は同じ式が出てくるはずです。

at_key
質問者

お礼

なるほど、そうすればいいのですね。 さらに違う方法も書いてくれてありがとうございます。

その他の回答 (2)

  • spring135
  • ベストアンサー率44% (1487/3332)
回答No.2

単なるベクトルA↑、B↑の引き算を実行すればよいのではありませんか。 A↑=(ax,ay)、B↑=(bx,by) C↑=A↑-B↑=(ax-bx,ay-by)=(cx,cy) cx=ax-bx, cy=ay-by

at_key
質問者

補足

ある向きの量を減らす、というのならそれでいいのですが、ある向きの量を乗算する、という風の事がやりたいのです。

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

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

at_key
質問者

補足

説明が足りませんでした。ごめんなさい。 「減らす」というのはある量を減算するということではなく0.0~1.0の値を掛け算して減らしたい、ということです。

関連するQ&A