如何确定NSBezierPaths是否在Cocoa中相交?

Eug*_*din 5 cocoa objective-c nsbezierpath

我很难弄清楚如何确定cocoa中两个NSBezierPath闭合对象的交集.我在网上做了一些研究,到目前为止找不到答案.

这就是我所拥有的. 在此输入图像描述

我需要编写一种在所有这些情况下都会返回true的方法.

我到目前为止所想的是使用bezierPathByFlatteningPath展平矩形,然后使用elementAtIndex:associatedPoints:取每个元素(作为线段)来 遍历其中的每个点并检查第二个对象(矩形或椭圆)是否包含point(使用containsPoint :).

但是,我不知道如何通过细分的所有要点......

如果有人有任何可能有帮助的暗示或想法,我会非常感激!

NSG*_*God 3

如果您有 2 个贝塞尔曲线路径矩形并且知道它们的每个框架,那么您可以使用NSIntersectsRect()

NSRect rect1 = NSMakeRect(20.0, 150.0, 300.0, 100.0);
NSRect rect2 = NSMakeRect(100.0, 100.0, 100.0, 200.0);

[[NSColor redColor] set];

[NSBezierPath strokeRect:rect1];
[NSBezierPath strokeRect:rect2];

BOOL intersects = NSIntersectsRect(rect1, rect2);

NSLog(@"intersects == %@", (intersects ? @"YES" : @"NO"));
Run Code Online (Sandbox Code Playgroud)

生产:

在此输入图像描述

在这种情况下,它将记录intersects == YES.