[英]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)
您尚未描述细分的组织方式。
从水平方向的给定点构建射线,找到第一个相交的线段。 获取该段的上端,并确定哪个相邻段按顺时针顺序排列。 继续该段的第二个末端,依此类推,直到再次遇到第一个段。
边界命令正在做的是在一个闭合的多边形内找到一个2d点。 有很多算法可以解决这个问题(请参阅此处) 。 但是,由于您说的是未将行分组,因此必须将其分为两个步骤。 第一步是检测线是否为多边形形状的一部分,并将所有这些多边形存储在数据中。 接下来是找到属于多边形形状的最近的线。 一旦检测到您已找到解决方案。 为了找到到点的近线段,简单的搜索将为您带来很多结果。
祝好运
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.