【发布时间】:2014-11-18 08:58:58
【问题描述】:
过去几周我一直在处理一个涉及一些三角函数的应用程序,但目前卡住了。如下图所示,我有一个圆形项目(位置 #1 处的绿色圆圈),我知道它的中心点(我们称之为 X1,Y1)。圆圈有另一个点(橙色圆圈)有点偏离中心 - 在其他两个标记(蓝色圆圈)之间。这些标记可以四处移动。计算橙色点的坐标(我们称之为 X2,Y2),并计算蓝线相对于圆的水平线的角度(称之为角度)。
我可以通过以下方式计算圆心和点之间的差:
deltaX = X2-X1
deltaY = Y2-Y1
我需要将绿色圆圈(顺时针或逆时针 - 以较短者为准)从其起始位置(位置 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)
我希望当圆移动/旋转到位置 2 时,我需要将这些偏移量调整到它的新中心。
X3 = X3 + 偏移量X
Y3 = Y3 + 偏移量Y
但是,当我尝试使用此数学运算时,它并没有将圆圈的橙色标记放在正方形的中心。不确定我的方程式和计算是否基于旋转角度(正或负,CW 或 CCW)是否正确,或者我是否正确使用了角度(我从 90 度中减去已知角度)。如何正确计算最终点/位置?任何帮助和示例将不胜感激!
非常感谢您的宝贵时间!
【问题讨论】:
标签: c# .net math trigonometry robotics