我过去几周一直在开发一个涉及三角学的应用程序,目前遇到了困难。如下图所示,我有一个圆形物品(位于位置#1的绿色圆圈),我知道它的中心点(我们称之为X1,Y1)。圆上还有另一个点(橙色圆圈),它有点偏离中心 - 位于两个其他标记(蓝色圆圈)之间。这些标记可以移动。橙点的坐标被计算出来(我们称之为X2,Y2),蓝线的角度也被计算出来(我们称之为Angle),相对于圆的水平线。
我可以通过以下方式计算圆心和点之间的差:
deltaX = X2-X1
deltaY = Y2-Y1
我需要将绿色圆圈移动并旋转(向CW或CCW方向,以较短的方式),从其起始位置(位置1)移到位置2。这意味着角度可能为负或正。蓝线必须垂直,橙点必须位于位置2的中心(红色正方形)。我知道位置2的中心坐标(我们称此点为X3,Y3)。位置#1和位置#2彼此正好相距90度。
我认为我可以使用一些三角恒等式公式来计算点的旋转,例如:
offsetX = deltaX * cos(90-Angle) - deltaY * sin(90-Angle)
offsetY = deltaX * sin(90-Angle) + deltaY * cos(90-Angle)
我希望这些偏移量是我将圆形调整到其新中心时所需的内容。
X3 = X3 + offsetX
Y3 = Y3 + offsetY
但是,当我尝试使用这个数学公式时,它没有将圆的橙色标记放在正方形的中心。不确定基于旋转角度(正或负,CW或CCW)我的方程式和计算是否正确,或者我是否正确使用了角度(在90度中减去已知角度)。如何正确计算最终的点/位置?任何帮助和示例都将不胜感激!
非常感谢您的时间!
sin
和cos
,任何值都可以,即使是 -9000。唯一让我困惑的是90 - Angle
,因为我看到的所有 sin 和 cos 实现都采用角度的弧度值,而不是度数。但我相信你知道这一点。 - Atomosk