簡體   English   中英

如何偏移多邊形邊緣?

[英]How to offset polygon edges?

我有一個生成閉合多邊形的 point2D 列表。 現在我想通過在給定內部或外部選項和偏移值的情況下偏移多邊形來創建另一組 2D 點。 我該怎么做? 在此處輸入圖片說明

在此處輸入圖片說明

對於每個多邊形頂點,計算外部平分向量作為兩個相鄰邊的歸一化法線nanb的總和),然后對其進行歸一化

 bis = na + nb 
 bis = bis / Length(bis)

然后找到所需的平分線長度以提供偏移距離為

 l = d / Sqrt(1 + dotproduct(na,nb))

並獲得偏移多邊形頂點(使用減號作為內部偏移!):

P' = P + l * bis

補充:這里的python實現

您需要使用 dircetion 才能定義外部/內部。 更好的是使用箭頭(向量)的左側/右側。

在我的示例中,偏移量位於向量的右側,現在您需要計算紅線的所有交點以定義線的新起點-終點。

示例:P0 = (5,2) & P1 = (2, 1.7)

V1 = -3,-0.3。 順時針旋轉 90 度給我們向量 -0.3, 3 (a,b) -> (b, -a)

將向量除以 3(大約是圖中的距離)給我們 (-0.1, 1) 設置點 P0 除以向量給出 P0' (5,2) - v(-0.1,1) = (4.9, 3)

在此處輸入圖片說明

暫無
暫無

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

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