简短版:
基本上,我想通过Line AB
的末端点(Point B
)来确定未知点C的X和Y值
。
我尝试使用atan2(B.y,B.x)
,但它给出相对于X轴
的角度,导致坐标错误。我想到需要获取由Line BC
和虚拟水平轴形成的角度(Angle P
)。有没有办法获得那个角度?如果获取该角度不能实现我的目标,那么应该怎么做?
详细版:
我正在使用C++进行一些数学计算,遇到了这个问题。
我有两个向量:Vector A
和Vector B
(由Point A
和Point B
表示,并形成line AB
)。现在,我想要得到Vector C
(Point C
),它距离Vector B
(由Line BC
表示)有L
单位远。
我寻找了一些资料,读了一些书,并获得了这个公式来获取所需的点。
/* Let:
* L = length from B to C
* ( B.x, B.y ) = start point
* ( C.x, C.y ) = end point
* theta = angle respective to X-Axis ( using atan2( B.y, B.x ) )
*/
// To get C.x use formula cos( theta ) = ( C.x - B.x ) / L then derive
C.x = ( L * cos( theta ) ) + B.x;
// To get C.y use formula sin( theta ) = ( C.y - B.y ) / L then derive
C.y = ( L * sin( theta ) ) + B.y;
然而,这并不会导致如上所示的
Point C
,因为得到的C
将与X轴
相关。在阅读更多内容后,我发现需要获取Line BC
(淡红色线)和虚拟水平轴(青色线)之间的角度(由紫色Angle P
表示),虚拟水平轴包含Point B
。另一个例子: 在这种情况下,使用上述公式会导致
C
错位(在(X,5)
上方)。我不确定获取
Angle P
是否能达到我的要求,如果您知道更合适的答案,请告诉我。