这不是家庭作业。我们正在尝试在一个项目的圆圈之间建立双重连接线。
给定任何类型的三角形(因为它会被旋转)
- AB是已知的
- 交流是已知的
- BC 知道在哪里
- AB 等于 BC(它们都是圆的半径)
点 A 是 (x1,y1) 并且是已知的。它是圆的中心点。点 B 是 (x2,y2) 并且是已知的。它是圆边缘上的点,连接到远程圆的中心。
点 C 是未知的 (x3,y3) 并且是我们想要弄清楚的。我认为我们需要使用余弦定律,但到目前为止还没有奏效。
感谢任何能提供帮助的人!
这不是家庭作业。我们正在尝试在一个项目的圆圈之间建立双重连接线。
给定任何类型的三角形(因为它会被旋转)
点 A 是 (x1,y1) 并且是已知的。它是圆的中心点。点 B 是 (x2,y2) 并且是已知的。它是圆边缘上的点,连接到远程圆的中心。
点 C 是未知的 (x3,y3) 并且是我们想要弄清楚的。我认为我们需要使用余弦定律,但到目前为止还没有奏效。
感谢任何能提供帮助的人!
您拥有的信息比获得答案所需的信息多得多,而且与余弦定律无关
基本上你只需要A、B、AC和BC
你画一个圆,A为圆心,AC为边
你画另一个圆,以 B 为中心,BC 为边缘
这两个圆会有两个相交点,它们是 C 的两个可能位置
把它放在数学上:
你有两个二元二次方程:
你需要从这两个方程中得到 (x, y)
您可以使用余弦定律,因为您知道三角形 (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)*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 的符号以获得两个解决方案中的另一个。
请注意,可以通过观察以下内容来避免计算 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)
这可能比三角函数更快地评估。