从 x 轴找到矢量所产生角度的典型方法(假设 x 轴从左到右, y 轴从下到上运行):
double vector_angle = atan2( y , x )
但是,我希望我的轴的原点位于圆上的某个点上,以便 x 轴从圆的边缘上的点穿过圆的中心,并且 y 轴与该点处的圆相切(因此将垂直于 x 轴)。
假设代码仍然是相同的,但现在通过距离 k 和角度 theta 调整,可能:
double y_position = ( y + k ) * theta;
double x_position = ( x + k ) * theta;
double vector_angle = atan2( y_position, x_position );
但我不确定这一点。对于基于触摸的应用程序来说,这是一个普遍的问题,我希望有一个通用的方法来使用滑动运动来移动精灵(在cocos2d中),滑动运动始终与圆心保持恒定距离。
这里, B 是矢量的原点,可以通过旋转 theta 进行变换。例如,如果我们转换圆圈并将 B 指向90度,则 B 将位于(4,0)且 B 行 - > A 沿着轴4(y = 4)。我希望在转换时获得点 B 的节点空间中的角度。
答案 0 :(得分:0)
Arctan返回向量的正确角度,其中“x轴”是垂直于切线的直线。