0

我从只有两个点和一个属于这两个点的角度开始。我剩下的唯一部分是最后一点,我不想强​​行通过它。到目前为止,我拥有下面列出的所有信息。

  • 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;
}
4

3 回答 3

4

让我们 P 是 AB 段的中心,P = ( A + B ) / 2

则PC向量垂直于AP,PC的长度为| 电脑| = | 美联社| / Tg(角度),Tg = Tan = 正切

让我们 Tg(角度) = t

第一个条件(perp 向量的点积):PCx*APx+PCy*APy=0

第二个(平方长度): t^2*(PCx*PCx+PCy*PCy) = APx*APx+APy*APy

该系统的解决方案(2个解决方案,C点可能在AB线的不同侧):

PCx = +- APy/t

PCy = -+ APx/t

小心:标志应该是相反的!

最后:

Cx = Px + PCx = Ax/2 + Bx/2 +- Ctg(角度)/2 * (Ay + By)

Cy = Py + PCy = Ay/2 + By/2 -+ Ctg(角度)/2 * (Ax + Bx)

第一点:

Cx1 = Ax/2 + Bx/2 + Ctg(角度)/2 * (Ay + By);

Cy1 = Ay/2 + By/2 - Ctg(角度)/2 * (Ax + Bx);

第二点:

Cx2 = Ax/2 + Bx/2 - Ctg(角度)/2 * (Ay + By);

Cy2 = Ay/2 + By/2 + Ctg(角度)/2 * (Ax + Bx)

于 2012-07-05T06:42:44.690 回答
1

如果通过 AB 的中心画一条垂直于 AB 的线,它将与点 C 相交。将线与线段 AB 相交的点称为 D。将这条线平移到 x 轴,D 到原点,AD 到y轴

^ y
|
| A
o
|\
| \
|  \
|   \ C
o----o-----> x
D

计算出长度 DC 后,将 C 投影回原始坐标空间应该很容易。

  1. 角度 C = 90 - 角度 A
  2. AC * cos 角 C = DC
  3. DC = AC * cos (90 - 角度 A)
于 2012-07-05T03:25:46.560 回答
0

我希望这行得通。以 P1 = (-10,0), P2 = (10, 0), Angle = 45 度为例;我得到 (0, +-10) 有最终答案,这是正确的吗?

Mid Point = ( (x1+x2)/2, (y1+y2)/2)
Slope Angle = arcTan(m) = arcTan((y2-y1) / (x2-x1))
Perpendicular Angle = Slope Angle +- 90
Distance = (distance(P1 & Mid Point)/sin(90-Angle)) * sin(Angle)

P3 = (cos(Perpendicular Angle)*Distance + Mid Point.x , sin(Perpendicular Angle)*Distance + mid Point.y)

我得到这个的方法是一个距离为 R 的单位圆,然后转到垂直角,对 x 使用 cos,对 y 使用 sin。我通过正弦定律得到了一半三角形(P1,中点,P3)的距离,其中中点是 90 度。

Please give your advice on this, Thanks ~vzybilly~

于 2012-07-06T17:48:38.843 回答