2 つの点と、両方の点に属する角度から始めます。私が残した唯一の部分は最後のポイントであり、これを力ずくで通り抜けたくありません。これまでのところ、以下にリストされているすべての情報があります。
- ポイントA:与えられた
- ポイントB:与えられた
- ポイント C: (?, ?)
- 角度 A: (点 A で) 与えられ、角度 B と同じ
- 角度 B: (ポイント B で) 与えられ、角度 A と同じ
- 角度 C: 180 - 角度*2~ (ポイント C)
- サイド AB: 距離 (ポイント ~ A & ポイント ~ B)
- Side AC: (Side~AB * Math.sin(Angle~A)) / Math.sin(Angle~C)
- Side BC: (Side~AB * Math.sin(Angle~B)) / Math.sin(Angle~C)
私がこれまでに持っているコードはほとんどこれです: (ヒント: p はポイント、a はアングル、d はサイドです。1 は A、2 は B、3 は C です。コードが読みにくいことはわかっています。しかし、それは私の最初のドラフトです。)
public static Point solve(Point p1, Point p2, double angle)
{
//known
double a1 = angle;
double a2 = angle;
double d12 = p1.distance(p2);
//mathed
double a3 = 180 - (angle*2);
double d13 = (d12*Math.sin(a1))/Math.sin(a3);
double d23 = (d12*Math.sin(a2))/Math.sin(a3);
//mathed, mathed.
Point p3 = null;
return p3;
}