这不是作业。我们正在尝试在项目的圆圈之间建立双连接线。
给定任何类型的三角形(因为它将被旋转)
A点是(x1,y1)并且是已知的。它是圆的中心点。 B点是(x2,y2)并且是已知的。它是圆的边缘上连接到远程圆的中心的点。
C点未知(x3,y3),正是我们想要弄清楚的。我认为我们需要使用余弦定律,但到目前为止它还没有成功。
感谢任何可以提供帮助的人!
答案 0 :(得分:2)
你获得答案所需的信息比你需要的更多,而且与余弦定律无关
基本上你只需要A,B,AC和BC
您绘制一个圆圈,以A为中心,AC为边缘
您绘制另一个圆圈,以B为中心,BC为边缘
这两个圆圈将有两个相交点,它们是C
的两个可能位置把它放在数学中:
你有两个二元二次方程:
你需要从这两个方程得到(x,y)
答案 1 :(得分: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)*v1
和y=y1+(AC)*v2
)。我们可以通过将单位矢量从A旋转到B以角度θ:
v1 = (cos(theta)*(x2-x1) + sin(theta)*(y2-y1))/(AB)
v2 = (cos(theta)*(y2-y1) - sin(theta)*(x2-x1))/(AB)
翻转theta的标志以获得两个解决方案中的另一个。
请注意,可以通过观察:
来避免计算thetacos(theta) = ((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))
sin(theta) = sqrt(1-((BC)^2 - (AC)^2 - (AB)^2)/(-2 (AC)(AB))^2)
可能比三角函数更快地评估。