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

标签 objective-c macos cocoa

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

最佳答案

不确定 cocoa 中是否可能。您可以尝试自己解决这个问题,获取起点、终点和一些中间点坐标,根据这些点创建两个向量并找到三角形的有符号面积。对于数学,请参阅 this document (搜索“实现特定常规武器公约”)。

这是一个简单的函数:

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 坐标。

关于objective-c - 如何在 cocoa (osx)中检测顺时针/逆时针鼠标/光标拖动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668847/

相关文章:

macOS NSStackView 内容未填满可用空间

linux - 为什么一旦父 bash 脚本死亡,来自 bash 的 eval 调用的 child 就会成为孤儿?

java - 在 Mac OS X 上最小化后 JFrame 不刷新

objective-c - 如何在 Cocoa 应用程序中切换 View ?

objective-c - 将 ivar 名称指定为 @synthesize 被认为是多余的还是一种好的做法?

php - 如何将 plist 文件上传到我的服务器以及我是否需要在服务器端执行任何特殊操作?

xcode - 在 Xcode 中设置约束,以便 NSView 在内容宽度增加时调整大小

cocoa - NSTextfield 文本有时会消失

objective-c - 为什么不设置值:forKeyPath invoked on mutable dictionary throw exception for unknown keypaths?

ios - 如何计算 SpriteKit 中球的下落速度