0

楕円形の「卵」の形を (iOS で) 描いており、それをパーティクルの境界として使用したいと考えています。私の考えは、曲線パスを使用して を作成しUIView、次に使用hitTest:withEvent:またはpointInside:withEvent:境界衝突を強制することです。

問題は、もちろん、それUIViewが常に長方形であることです。点がこのような不規則な形状の内部にあるかどうかを確認するにはどうすればよいでしょうか?

- (void)drawRect:(CGRect)rect {
int w = rect.size.width;
int h = rect.size.height;
CGContextBeginPath(context);
CGContextMoveToPoint(context, w/2, h/5);
CGContextAddCurveToPoint(context, w*0.1, h/4.3, w*0.1, h*0.82, w/2, h*0.8);
CGContextAddCurveToPoint(context, w*0.9, h*0.82, w*0.9, h/4.3, w/2, h*0.2);

私はopenFrameworksを使用しています。このコードは Obj-C にすぎませんが、C++/obj-C++ ソリューションを受け入れることができます。

4

2 に答える 2

2

を作れCGPathRefば使えますCGPathContainsPoint。同じCGPathRefものを使用して、コンテキストにレンダリングできます。パスを含むコンテキストを呼び出すこともできCGContextPathContainsPointますが、テストが必要な場合によっては、コンテキストがない場合があります。そして別の選択肢はcontainsPointセレクター onUIBezierPathです。

于 2011-02-03T14:36:21.837 に答える
0

これをゼロからコーディングする場合は、http://www.softsurfer.com/Archive/algorithm_0103/algorithm_0103.htmで、任意のポリゴンに対して機能するいくつかの異なるアルゴリズムを使用します。

于 2011-02-03T14:40:32.240 に答える