アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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方向に変化させたことになる。
あとは、+θ回転させもとの角度に戻す。


どちらも、結局は同じ式が出てくるはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/08/04 14:05

単なるベクトルA↑、B↑の引き算を実行すればよいのではありませんか。



A↑=(ax,ay)、B↑=(bx,by)

C↑=A↑-B↑=(ax-bx,ay-by)=(cx,cy)

cx=ax-bx, cy=ay-by

この回答への補足

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

補足日時:2014/07/26 19:07
    • good
    • 0

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/go …

この回答への補足

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

補足日時:2014/07/26 19:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!