• ベストアンサー

内積の定義を用いた三角形の角度の求め方について

http://www.sousakuba.com/Programming/gs_two_vector_angle.html 上記のページを参考に三角形の角度を求めるプログラムを作りたいのですが、 理解出来ないので質問させて頂きました。 Vector2には、xとyの座標位置がそれぞれ格納されているかと思いますが、 計算で使われている座標はベクトルAとベクトルBの2点の座標のみのように思うのですが、 なぜ、ベクトルAとベクトルBの交点の座標は使わずに三角形の角度が計算できるのでしょうか? ベクトルAとベクトルBの座標位置は(0,0)という単純な話なのでしょうか?

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

  • ベストアンサー
noname#252159
noname#252159
回答No.2

Vector 2 { double x double y } は、2次元でのベクトルについて、x成分とy成分のみを定義しているだけです。 x-yのそれぞれの方向量を表しているのです。  位置ベクトルとして定義していないからベクトルAとベクトルBとを始点をそろえて内積を求められます。  しかし、 ベクトルを位置ベクトルとして定義するとなれば、 Vector 22 D { double x0 , x 1 ; double y0 , y 1 ; } と始点と終点とをそれぞれx成分、y成分とで計4つの量でベクトルのクラスを定義する必要があります。

ekekojr
質問者

お礼

とても良くわかる解説ありがとうございます! とても参考になりました!

その他の回答 (2)

  • 178-tall
  • ベストアンサー率43% (762/1732)
回答No.3

>ベクトルAとベクトルBの座標位置は(0,0)という単純な話なのでしょうか? たぶん、そうです。 ベクトル A と B の始点座標は (0, 0) 、終点座標は (x1, y1) と (x2, y2) として、 A と B の内積 (定義?) は、  |A||B|*cosθ = √(x1^2+y1^2)√(x2^2+y2^2) cosθ  ただし、θ= arctan(y1/x1) - arctan(y2/x2) 勘定してみると、  |A||B|*cosθ = x1x2 + y1y2 になる模様。   

ekekojr
質問者

お礼

検証までして頂きありがとうございます!

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

>ベクトルAとベクトルBの座標位置は(0,0)という単純な話なのでしょうか? 座標位置って何ですか?始点のことですか? さておき、両者の始点を(0, 0)にしたってしなくたって結果は同じです。 両者を平行移動しても両者の位置関係は同じですよね? だとすると、両者の始点を(0, 0)にしておく方が計算がずっと楽だってことです。

関連するQ&A