2

这不是家庭作业。我们正在尝试在一个项目的圆圈之间建立双重连接线。

给定任何类型的三角形(因为它会被旋转)

  • AB是已知的
  • 交流是已知的
  • BC 知道在哪里
  • AB 等于 BC(它们都是圆的半径)

点 A 是 (x1,y1) 并且是已知的。它是圆的中心点。点 B 是 (x2,y2) 并且是已知的。它是圆边缘上的点,连接到远程圆的中心。

点 C 是未知的 (x3,y3) 并且是我们想要弄清楚的。我认为我们需要使用余弦定律,但到目前为止还没有奏效。

感谢任何能提供帮助的人!

4

2 回答 2

2

您拥有的信息比获得答案所需的信息多得多,而且与余弦定律无关

基本上你只需要A、B、AC和BC

  1. 你画一个圆,A为圆心,AC为边

  2. 你画另一个圆,以 B 为中心,BC 为边缘

这两个圆会有两个相交点,它们是 C 的两个可能位置

把它放在数学上:

你有两个二元二次方程:

  • (x-x1)^2 + (y-y1)^2 = AC^2
  • (x-x2)^2 + (y-y2)^2 = BC^2

你需要从这两个方程中得到 (x, y)

于 2012-06-13T07:50:50.643 回答
1

可以使用余弦定律,因为您知道三角形 (AB)、(BC) 和 (AC) 的三个边的长度。余弦定律指出

(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)*v1y=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 的符号以获得两个解决方案中的另一个。

请注意,可以通过观察以下内容来避免计算 theta:

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)

这可能比三角函数更快地评估。

于 2012-06-13T08:29:39.317 回答