三角形 (AB)、(BC)、(AC) の 3 辺の長さはわかっているので、コサインの法則を使用できます。余弦の法則は次のように述べています。
(BC)^2 = (AC)^2 + (AB)^2 - 2 (AC)(AB) cos theta
ここで、theta は頂点 A における三角形の内角です。これを並べ替えると、
theta = acos(((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB)))
あなたの答えは(ベクトル表記で)です:
(x,y) = (x1,y1) + (AC)*(v1,v2)
ここ(v1,v2)
で、 は A から C への方向の単位ベクトルです (つまり、スカラー表記のx=x1+(AC)*v1
およびy=y1+(AC)*v2
)。単位ベクトルを A から B に角度 theta だけ回転させることで、v1 と v2 を取得できます。
v1 = (cos(theta)*(x2-x1) + sin(theta)*(y2-y1))/(AB)
v2 = (cos(theta)*(y2-y1) - sin(theta)*(x2-x1))/(AB)
theta の符号を反転して、2 つの解のもう一方を取得します。
次のことを観察することで、シータの計算を回避できることに注意してください。
cos(theta) = ((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))
sin(theta) = sqrt(1-((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))^2)
これは、三角関数よりも評価が速い場合があります。