5

ココアの2つのNSBezierPath閉じたオブジェクトの交差を判別する方法を理解するのに苦労しています。オンラインで調べたところ、今のところ答えが見つかりませんでした。

これが私が持っているものです。 ここに画像の説明を入力してください

これらすべての場合にtrueを返すようなメソッドを作成する必要があります。

これまで私が考えていたのは、bezierPathByFlatteningPathを使用して長方形を平坦化し、elementAtIndexを使用して(線分として)各要素を 取得することです。ポイント(containsPointを使用:) 。

しかし、セグメントのすべてのポイントを通過する方法がわかりません...

誰かが役立つかもしれないヒントやアイデアを持っているなら、私は本当にそれをいただければ幸いです!

4

2 に答える 2

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"));

プロデュース:

ここに画像の説明を入力

この場合、ログに記録されますintersects == YES

于 2013-03-22T19:34:16.137 に答える