【问题标题】:How to detect clockwise/counterclockwise mouse/cursor drag in cocoa (osx)?如何在可可(osx)中检测顺时针/逆时针鼠标/光标拖动?
【发布时间】:2013-03-18 02:58:48
【问题描述】:

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

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    不确定在可可中是否可行。你可以尝试自己解决这个问题,抓取起点、终点和一些中间点坐标,根据这些点创建两个向量,然后找到三角形的有符号区域。有关数学,请参阅 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 坐标。

    【讨论】:

    • 刚刚尝试将其集成到我的代码中......看起来它正在工作!谢谢科迪!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多