我有一个组成路径的点的 NSArray。我可以检测到它何时自相交。发生这种情况时,我会尝试填充路径。
首先我使用CoreGraphics,现在我使用openGl 来绘制一个三角形数组。正如您在图像中看到的那样,效果不佳。
我如何只填充圆形区域而留下“尾巴”?我在考虑反向洪水填充,但不认为 CG 有任何 API 功能......
记录双向链表中的所有点。当需要填写时,从头开始遍历列表并找到最接近结尾的点。然后, lineto 该点,然后 lineto 每个点以相反的顺序,在列表中的第二个点停止。填充将隐式关闭路径,该路径将从您离开的位置(第二个点)跳回开始(第一个)点。
这只是我的想法;您可以对此进行一些变体,以查看最有效的方法。您可能会在每个节点中记录最近的前一个节点,但这对于许多节点来说可能会变得很昂贵。
也许不是实际绘制路径,您可以近似路径的直径并用您的近似值绘制一个圆。
下面是一些在 iPhone 上检测圆圈手势的代码: http ://www.mobileorchard.com/iphone-circle-gesture-detection/