繁体   English   中英

2D几何:如何在给定内部点的情况下确定最接近的周围线?

[英]2D Geometry: How to determine the closest surrounding lines given an internal point?

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

此图像描绘了带有线和位于线内的点的图形(蓝色正方形)。 边界命令之前

一旦使用该点运行了autocad boundary命令,此图像就会以所需的输出描绘同一图形。 边界命令后

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

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

谢谢

您可以使用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

您尚未描述细分的组织方式。

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

边界命令正在做的是在一个闭合的多边形内找到一个2d点。 有很多算法可以解决这个问题(请参阅此处) 但是,由于您说的是未将行分组,因此必须将其分为两个步骤。 第一步是检测线是否为多边形形状的一部分,并将所有这些多边形存储在数据中。 接下来是找到属于多边形形状的最近的线。 一旦检测到您已找到解决方案。 为了找到到点的近线段,简单的搜索将为您带来很多结果。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM