【问题标题】:Trying to determine if a movement vector is CW or CCW around a point尝试确定运动矢量是围绕某个点的 CW 还是 CCW
【发布时间】:2011-10-06 09:24:48
【问题描述】:

我正在为 iOS 设备编写一些触摸输入代码,需要确定滑动的移动相对于屏幕中心是顺时针还是逆时针。

使用触摸的positiondeltaPosition,我可以使用点积计算从屏幕中心到这些点的向量之间的角度,但这并没有给我一个符号 em> 角度来决定它是否是CW。

如何判断滑动已围绕中心移动的方向?

【问题讨论】:

    标签: ios touch unity3d


    【解决方案1】:

    A 表示滑动矢量,B 表示从滑动开始到屏幕中心的矢量。然后可以计算AB的分量的行列式

    | A.x A.y |
    | B.x B.y |
    
    = A.x * B.y - B.x * A.y
    

    行列式的符号会告诉你B是指向A的右边还是左边。

    正如@Jeremy W. Sherman 正确指出的那样,哪个符号对应哪个方向取决于屏幕坐标系的布局方式。如果 x 轴向右,y 轴向下,正表示 CW,负表示 CCW(如果我的心算正确的话)。零始终意味着直接朝向或直接远离中心的运动。

    【讨论】:

    • ...需要注意的是,正号表示顺时针还是逆时针取决于您的 y 轴是在屏幕上增加还是向下增加。 x 轴的增加方向也很重要,但在 iOS 上,与您的原点是屏幕的左上角还是左下角相比,这不太可能成为问题。
    • 正是我需要的。谢谢!
    猜你喜欢
    • 2010-10-11
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多