我正在嘗試繪製折線以顯示多邊形內的路線。多段線必須相互平行,而不是走出多邊形。計算多邊形內的折線的點
我的解釋是可怕的,我想做的事情是這樣的:
從哪裏開始任何意見,將不勝感激!
我需要用TypeScript爲Angular 2中的CesiumJS創建一些東西,但是任何幫助都是有用的。
我正在嘗試繪製折線以顯示多邊形內的路線。多段線必須相互平行,而不是走出多邊形。計算多邊形內的折線的點
我的解釋是可怕的,我想做的事情是這樣的:
從哪裏開始任何意見,將不勝感激!
我需要用TypeScript爲Angular 2中的CesiumJS創建一些東西,但是任何幫助都是有用的。
在你所示的例子中,你的多段線不需要指定任何實際的內部點。您可以通過按照線的順序(從指示的起點開始)只指定沿矩形外圍的點來創建該圖像的副本。該算法看起來像這樣:
定義感興趣的矩形。
定義描述矩形內路徑的對角線斜率的直線。
生成一組完全覆蓋矩形的平行線,並延伸到其邊緣之外。這是通過向原始線的兩個端點反覆添加或減去一個固定的X或Y偏移量來完成的,以便您有一組平行線在所有方向上延伸到矩形之外。
按順序(從任何一邊開始到結束於對面)迭代線條集合,並查找線條與矩形相交的點。您可能需要查找algorithm to find intersection points。
a。對於任何不與矩形正好相交兩次的行,請放棄該行。
b。對於確實與矩形相交兩次的其餘行,將兩個交點添加到折線,但是替換它們的添加順序。換句話說,如果上一條線添加北交點,然後添加南交點,則當前線應在南北交點之前添加其南交點,反之亦然。
既然所有的交點都已經加到了折線中,那麼你可以將該折線添加到你的場景中並進行渲染。
所以我最終解決了這個問題。我現在將另一個庫與Cesium結合使用 - https://github.com/chrisveness/geodesy。 計算交叉點是最困難的部分,下面是一個RunKit,描述如何去做 - https://runkit.com/hnipps/calculate-geodesic-intersection – HNipps