簡體   English   中英

如何從列表中刪除多余的頂點

[英]How do I remove redundant vertices from list

我有頂點列表,即List<Point> ,其中包含以下正方形點: (0,0), (1,0), (2,0), (3,0), (4,0), (4 ,1), (4,2), (4,3), (4,4), (3,4), (2,4), (1,4), (0,4), (0,3) ), (0,2), (0,1), (0,0)

在此處輸入圖片說明

要畫一個正方形,我只需要四個點 (0,0)、(0,4)、(4,4)、(4,0),如何從列表中刪除多余的(使直線)點?

它並不總是正方形,基本上我想減少點的數量,如果它們形成直線 例如 (0,0), (0,1), (0,2), (0,3), (0,4) 制作直線而不是繪制所有四個點,從點繪制一條線會很快(0,0), (0,4)。

一次看三個連續點(讓我們稱它們為p0p1p2 )。 如果p2 = p0 + k(p1 - p0) ,則這三個點共線(形成單線p2 = p0 + k(p1 - p0) ,其中k是任意實數。 我們可以用聯立方程表達上述條件:

(x2 - x0) = k(x1 - x0)
(y2 - y0) = k(y1 - y0)

從理論上講,您需要做的就是依次獲取每組三個點。 計算x分量和y分量的k值; 如果它們是相同的,那么這些線是共線的,所以刪除p1

實際上,由於定點或浮點的限制,在一般情況下這變得更加棘手。 一旦它們的坐標被量化,應該共線的點可能不是非常共線的。 因此,在進行比較時,您可能需要允許一些誤差余量。

自動執行此操作的一種方法是獲取包含minX,maxX,minY和maxY(即最大擴展坐標並假設數組中的其他點都在矩形邊界內)的組合的點。

如果這不能回答您的問題,您可能想要提供更多細節和約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM