2D几何:如何确定给定内点的最近的周围线?

时间:2017-10-19 15:44:38

标签: c# geometry 2d autocad

我希望复制AutoCAD BOUNDARY命令提供的功能。给定图形中的2D点,我需要找到围绕该点的所有最近的线段。

此图像描绘了一条线条和位于线条内的点(蓝色方块)。  before boundary command

使用该点运行autocad boundary命令后,此图像描绘了具有所需输出的相同图形。 after boundary command

autocad boundary命令找到了点周围最近的线并突出显示它们。我一直在尝试在C#中实现相同的结果,而不依赖于autocad编辑器命令。我唯一的想法是某种泛洪填充算法,但这似乎非常低效,并且对于不应该解决的难题本身而言非常冗长。

我非常感谢能够指出正确方向的任何建议或伪代码。

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用Editor.TraceBoundary()方法。

public unsafe DBObjectCollection TraceBoundary(Point3d seedPoint, bool detectIslands)

http://www.through-the-interface.typepad.com/through_the_interface/2010/06/tracing-a-boundary-defined-by-autocad-geometry-using-net.html

答案 1 :(得分:0)

您尚未描述细分如何组织。

从水平方向的给定点构建光线,找到第一个相交的线段。获取该段的上端并按顺时针顺序确定第一个相邻段。继续该段的第二端,依此类推,直到再次遇到第一段。

答案 2 :(得分:0)

边界命令正在做的是在闭合多边形内找到一个2d点。有许多算法涵盖了这个(see here)。 但是,因为您说您的线路未分组,您必须将其分为两个步骤。 第一步是检测线是否是多边形的一部分,并将所有这些多边形存储在数据中。接下来是找到属于多边形形状的最近线。一旦发现您找到了解决方案。 为了找到一个点的近岸线段,一个简单的搜索将获得很多结果。

祝你好运