我从只有两个点和一个属于这两个点的角度开始。我剩下的唯一部分是最后一点,我不想强行通过它。到目前为止,我拥有下面列出的所有信息。
- A点:给定
- B点:给定
- C点:(?,?)
- 角度 A:给定(在 A 点),与角度 B 相同
- 角度 B:给定(在 B 点),与角度 A 相同
- 角度 C:180 - 角度*2~(在 C 点)
- AB边:距离(Point~A & Point~B)
- AC 面:(Side~AB * Math.sin(Angle~A)) / Math.sin(Angle~C)
- 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;
}