
まず画像を見ていただきたいのですが‥
①のように長さも向きも決まっていない2つのベクトルがあり、②のように2つのベクトルのなす角を二等分する青いベクトルを求めて、③青いベクトルがX軸のプラス方向から何度の開きがあるかを求めたいのですが、どのように計算すれば良いでしょうか?
C#で求めようとしていますが、考え方の提示だけで問題ありません。
また、私が数学で理解しているのはベクトル・三角関数・内積・ラジアンあたりまでになります。
ちなみに私は最初、2つのベクトルを正規化してから足すことで青いベクトルを求めて、次にX軸に沿った X=1, Y=0 のベクトルと青いベクトルを正規化したものとでアークコサイン関数を使ってなす角を求めようとしました。
しかし最初の2つのベクトルが180度の開きになっていると結果がおかしくなります。
そこで、条件分岐で180度の開きになった時だけ独自にベクトルを求めようとしているのですが、計算が冗長な感じがしています。
求め方としてこれらの考え方は間違っていないでしょうか?
ちなみに②の二等分するベクトルは2方向存在しますが、Y軸のプラス方向を向くベクトルを必ず取得したいです。

No.3ベストアンサー
- 回答日時:
そうそう, C# なら Math.Atan2 を使えば「x軸となす角」が一発で求まるよ. 正規化しなくていいし角度の範囲も -π
π までちゃんと求まるので簡単.Tacosanさん
ご回答ありがとうございます!
はい、まさに私もAtan2で取得するのを試してうまくいきました!
実はエクセルで計算が合ってるか試してみた際にはACOSですんなりうまくいったのですが、C#のMath.Acosでは同じ結果にならずそのままではうまくいかなかったためAtan2で求めていけました。
ついでに言えば、エクセルのAtan2は引数が(x, y)のようですがC#は(y, x)のようで、こちらも結果が噛み合わずにしばらく混乱したのですが、引数が逆だと気付いて事なきを得ました。。
No.2
- 回答日時:
ぎりぎりの条件では「Y軸のプラス方向を向くベクトル」が存在しないこともあるんだけど, それは OK?
Tacosanさん
確かに、Y軸に沿ったベクトルの場合にその条件を満たしますね‥
ですが私の今実装したいと思っている場面ではその条件にはならないので、OKです!
No.1
- 回答日時:
二つのベクトルをVa(xa,ya), Vb(xb,yb)とすると
各々のベクトルがX軸と成す角度θa, θbは
θa = arccos(xa/|Va|) |Va| = √(xa^2+ya^2)
θb = arccos(xb/|Vb|)
従って求める角度は、(θb - θa)/2 + θa
>siffon9さん
早速のご回答ありがとうございます!
そうか、2つのベクトルそれぞれでX軸とのなす角を求める方がスマートだったのですね!
アークコサイン関数で求めるとベクトルが -1, -1 でも -1, 1 でも成す角度が同じ 2.356194 になってしまいますが、Yがマイナスかプラスかで判定して条件分岐してやれば求められそうです!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
シーケンサー(PLC?)で制...
-
ダイアログ内コントロールの位...
-
緊急 ベーシックで国旗の作り方...
-
任意点を中心とした回転
-
3次元座標上の2直線の交点判...
-
ワード上Shapeの位置情報を統一...
-
VBで、開いているExcelシートの...
-
3次元空間上の2つの座標から...
-
18マスの左の方3×3のマス目を自...
-
始点、終点の二つの座標と半径...
-
ガウシアンフィルタのCプログラム
-
Excel関数で指定範囲内に有るか...
-
DirectXを使ってテクスチャ(画...
-
球面状に円を描くプログラム
-
指定した範囲の反転について
-
VB6のPrinter.ScaleWidth に対...
-
y=x^2の座標をプロットするプロ...
-
iPhoneの設定について
-
閉図形の座標の配列が右回りか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
c言語でキーボードから2点の座...
-
3次元空間上の2つの座標から...
-
ワード上Shapeの位置情報を統一...
-
シーケンサー(PLC?)で制...
-
多角形の内部かどうか判定する方法
-
Excel VBA で自在に図形を変化...
-
ガウシアンフィルタのCプログラム
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
選択範囲の座標値の抽出
-
ダイアログ内コントロールの位...
-
y=x^2の座標をプロットするプロ...
-
有限要素法について教えてください
-
有限要素法(FEM)について教え...
-
C言語 配列で座標
-
PanelとCanvasの違いについて
-
タッチパッドのタッチ座標取得
-
アクセスのセルの数え方。
おすすめ情報
>ちなみに②の二等分するベクトルは2方向存在しますが、Y軸のプラス方向を向くベクトルを必ず取得したいです。
こちらに関しては、③で求めた角度がマイナスになっていれば180度分加えてやればOKですね。。