• ベストアンサー

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

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% (2126/6288)
回答No.1

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

関連するQ&A

  • 内積の定義について

    2つのベクトルについての内積の定義として、以下のようなものがあります。 A=(A1,A2,A3),B=(B1,B2,B3) 内積 ⇒ A.B=A1B1+A2B2+A3B3 これは一般的な内積の定義ではなく、基底ベクトルがお互いに直交しているという特殊事情の場合のみに限定だと思います。斜交座標では基底ベクトルはお互いの直交性がないので上記のような内積にはならないと思います。 そうすると、内積の一般的な定義はどうなると考えるべきでしょうか。 A.B=|A||B|cos という幾何的なものでしょうか。また、内積は分配法則が成り立つというのは自然とそうなるものでしょうか。 すなわち、A=(B+C) でA.D=B.D+C.Dという式が成立するということですが。 以下のようなことを考えています。 直交デカルト座標でものを考えてきた人間が曲線座標(特に直交性を仮定しない)で考える場合、内積などが再定義される必要がある場合がある。一般曲線座標での定義の方が一般的で、その特殊な例として直交デカルト座標がある、すなわち、一般曲線座標の定義だけしっかり覚えておけばよい。(これは極論で、演算のスピードアップなどの実用面としては冒頭の内積の計算方法の説明でもよいだろうとは思いますが。) いかがでしょうか。

  • 内積での角度が等しい意味

    二次元ベクトルaとbのなす角度がxであったときに、2aとbのなす角度が同様にxになりますが、等しい角度になることの意味について教えてほしいです

  • 2つの座標と角度から交点座標の求め方

    (X1, Y1)と(X2, Y2)の2点の座標と角度θがあります。 この情報から交点座標(XX, YY)を求めたいと思っています。 どのような計算式になるのでしょうか? VB6にて作成しております。 よろしくお願いします。

  • 内積について

    ベクトルa=(1,2) ベクトルb=(2,1) であるとき、 内積は、 「ベクトルaからみたベクトルbの内積」 と 「ベクトルbからみたベクトルaの内積」 が考えられると思うんですが、 a・b=1x2+2x1=4・・・(1) b・a=2x1+1x2=4・・・(2) となり、視点となっているベクトルが無関係になってしまいます。 図を描かずに計算のみで、(1)と(2)を視点を考慮して区別し、角度を求めることは可能でしょうか?

  • 角度を求めるプログラム

    x,y座標上の2点を結んでできる線の度数での角度(45度、270度といった) を得たいのですがそういうプログラムまたは関数などはあるのでしょうか? 例えばA(0,1)とB(1,2)だと、B-Aでx=1,y=1になりy/x=1という数字が出てきます。 この1が45度になるようなアルゴリズムが知りたいです。

    • ベストアンサー
    • PHP
  • ベクトルの表示,内積について...

    2つ質問があります. (1) 空間の位置ベクトルはよく(x,y,z)のように3つの実数で表されますよね.これは空間内に適当な座標系を考えたときの,ある点の座標だと思います.一方,空間内に適当な基底{e1, e2, e3}をとったときに任意のベクトルAがA=x e_1+y e_2+z e_3と表せることから,Aを(x, y, z)と書くと思います,この場合(x, y, z)は必ずしも空間内の点の座標と一致しないはずです.質問は,(x, y, z)と書かれたときに,これは空間内の点の座標であると見るのか,または,ある基底で線型結合を取る時の係数であると見るのか,どちらなのかということです.これは文脈によるのでしょうか? (2) (1)に関連するかもしれないのですが,高校で(a, b, c)と(x, y ,z)の内積はax+by+czであると習いますが,これは座標系の取り方に関係なく(直交座標や斜交座標に関係なく)定まるものなのでしょうか?

  • 2線の交わる角度を求める式

    2線の交わる角度を求める式で、0での除算が発生しない方法を教えて下さい。 座標 線a ax1 = 0 , ay1 = 0 : ax2 = 12 , ay2 = 13 線b bx1 = 6 , by1 = 15: bx2 = 6 , by2 = 2 A=(y13-y0)/(x12-x0) B=(y2-y15)/(x6-x6)   0で除算が発生 2線の交わる角度 tanθ=(A-B)/(1+AB) 片方の線が垂直だと0で除算が発生しまい、うまく計算できません。 なにか他によい方法はないでしょうか。

  • 角度の求め方

    原点P(0.0,0.0)を中心とする円上の2点 A(X1,Y1)、B(X2,Y2)が分かっています。 角度APBの求め方を教えて下さい。 ベクトルPAとPBの内積から求める方法だと 180度以内しか求められません。 例えばA(1.0,0.0)、B(0.0,-1.0)の場合、 90度ではなく270度が求めたい値です。 恐らく点Aと点Bの位置によって場合わけを しなければいけないと思うのですが そのわけ方が分かりません。 もちろん、内積以外で求める方法があれば それを教えて頂きたく思います。 宜しくお願いします。

  • 3次元での回転による座標変換

    3次元での回転による座標変換に関して質問があります. X軸,Y軸,Z軸の直交座標系があるとします. この座標系において,ある位置ベクトル(a1,b1,c1)がX軸,Y軸,Z軸と成す角度は,θx,θy,θzは,ベクトルの内積から算出可能だと思います. θx=a1/sqrt(a1^2+b1^2+c1^2) θy=b1/sqrt(a1^2+b1^2+c1^2) θz=c1/sqrt(a1^2+b1^2+c1^2) X,Y,Zの直交座標系を回転させて,この位置ベクトルの向きを基準としたX'軸,Y'軸,Z'軸による新しい直交座標系を設定するには,どのようにすればよいでしょうか? θx,θy,θzと各軸での回転角度は違うものという認識でいいのでしょうか? 元の座標系において,各軸回りに順番に回転させればいいかと思うのですが,どうもイメージがつかみきれません. よろしくお願い致します.

  • 角度から楕円の座標を計算したい

    原点を中心として、長径20・短径10の楕円について ある角度の時のx座標y座標の値を得る式を考えているのですが、どうしても思いつきません。 x^2/a^2+y^2/b^2=1が楕円の方程式で間違いないと思います。 現在、 x^2/20^2+y^2/10^2=1 の式で表す楕円のxとyについて、角度θから計算したいのです。 元々数学が得意でないため高校時代の教科書を探して勉強し直してみたのですが、どうしても思いつきません。 θを与えると座標が出てくる式を教えてください。