算法实现套索选择工具?

CJ.*_*CJ. 8 algorithm cocoa image-manipulation selection edge-detection

我正在开发一个Mac OS X应用程序,作为它的UI的一部分,它将在其主视图中显示许多可以选择的视觉元素.这些元素可以放置在视图中的任何位置.UI将支持各种选择元素的方式:矩形选框选择,椭圆选框选择和"自由"套索选择.

我已经有矩形和椭圆选框工作了.算法非常简单; 如果元素的区域与矩形/椭圆的区域相交,则认为元素被"选中".

套索选择将像Photoshop中的现代图像处理应用程序一样工作; 用户可以单击并拖动将自行关闭的路径,并且将选择所绘制路径中包含的元素.

该算法可能比矩形/椭圆形选择复杂得多,因为选择的形式是不受限制的.我想知道是否有人有写这样的东西的经验,或者你是否可以指出我正确的方向,关于什么样的编程技术是必要的,以及这种算法最有效的方法是什么.

提前致谢.

Tho*_*mas 7

我能想到的唯一方法是将套索轮廓视为多边形.然后,您可以使用任何标准的点内多边形测试来检查要选择的元素.

当多边形与自身相交时,您将不得不做出决定(例如图8).

在构造多边形时,为了防止它获得太多的点,也许你可以跳过太接近前一点的点(可能是3个像素左右,具体取决于你的应用).