簡體   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