如何在可可(osx)中检测顺时针/逆时针鼠标/光标拖动?

时间:2013-03-27 20:32:49

标签: objective-c macos cocoa

我对Objective-c和cocoa开发相对较新,我很好奇是否有一种相对简单的方法来检测顺时针或逆时针鼠标/光标拖动?

1 个答案:

答案 0 :(得分:3)

不确定可可是否有可能。您可以尝试自己解决这个问题,抓住起点,终点和一些中点坐标,根据这些点创建两个向量并找到三角形的有符号区域。有关数学的信息,请参阅this document(搜索“实施CCW”)。

这是一个简单的功能:

int ccw(CGPoint a, CGPoint b, CGPoint c)
{
    const int area2 = (b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x);
    if (area2 < 0) return -1; // clockwise
    if (area2 > 0) return +1; // counter-clockwise
    return 0; // collinear
}

编辑:请注意,您的y轴可能会从上到下指向,因此您可能需要在传递给函数之前切换结果的符号或转换点的y坐标。