首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lasso选择实现

Lasso选择实现
EN

Stack Overflow用户
提问于 2015-04-30 12:52:08
回答 1查看 679关注 0票数 1

我想要实现像autocad的套索选择在2D.Blue是完全包含和绿色是部分(例如:如果你选择一个部分线)。我正在寻找一个足够好的算法来实现这个目标。套索选择是任意多边形(可以是凹的或凸的,也可以是自相交的)。

首先,我似乎必须将多边形转换为凸多边形或三角剖分。然而,对于.net,我找到了这个LibTessDotNet

三角剖分方法的问题是,我不知道如何知道,如果一条线是完全包含,因为部分线可以在任何多边形。

其他的想法是使用库,如剪刀,并确定通过布尔运算的交集。对于完全,我会做差分(应该是空的)或交集的部分。

有没有更好的工作方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-30 16:38:02

就我个人而言,我使用“多边形中的点”算法实现了曲线(如直线、圆、偏圆、椭圆、...etc)的Lasso选择,如下所示:

1)对于给定的曲线,从曲线中抽取几个点。

2)对于每个取样点,检查该点是否位于由Lasso路径形成的多边形内。如果有两个以上的点在拉索路径内,这条曲线是部分封闭的。如果所有采样点都在Lasso路径内,则完全封闭此曲线。

您可以从互联网上获得“点在多边形”算法和源代码,如在这个链接(http://alienryderflex.com/polygon/)。

如果你有许多曲线,并开始担心性能,那么你可以检查曲线的边框是否与拉索路径的边框相交。如果没有,则可以在搜索中跳过这条曲线。但是要做到这一点,就需要在每条曲线上先计算一个边界框,并且你需要确保它是最新的,并对曲线进行任何可能的更改。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29968271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档