2016-11-21 89 views
1

我正在嘗試繪製折線以顯示多邊形內的路線。多段線必須相互平行,而不是走出多邊形。計算多邊形內的折線的點

我的解釋是可怕的,我想做的事情是這樣的:

map example

從哪裏開始任何意見,將不勝感激!

我需要用TypeScript爲Angular 2中的CesiumJS創建一些東西,但是任何幫助都是有用的。

回答

1

在你所示的例子中,你的多段線不需要指定任何實際的內部點。您可以通過按照線的​​順序(從指示的起點開始)只指定沿矩形外圍的點來創建該圖像的副本。該算法看起來像這樣:

  1. 定義感興趣的矩形。

  2. 定義描述矩形內路徑的對角線斜率的直線。

  3. 生成一組完全覆蓋矩形的平行線,並延伸到其邊緣之外。這是通過向原始線的兩個端點反覆添加或減去一個固定的X或Y偏移量來完成的,以便您有一組平行線在所有方向上延伸到矩形之外。

  4. 按順序(從任何一邊開始到結束於對面)迭代線條集合,並查找線條與矩形相交的點。您可能需要查找algorithm to find intersection points

    a。對於任何不與矩形正好相交兩次的行,請放棄該行。

    b。對於確實與矩形相交兩次的其餘行,將兩個交點添加到折線,但是替換它們的添加順序。換句話說,如果上一條線添加北交點,然後添加南交點,則當前線應在南北交點之前添加其南交點,反之亦然。

  5. 既然所有的交點都已經加到了折線中,那麼你可以將該折線添加到你的場景中並進行渲染。

+0

所以我最終解決了這個問題。我現在將另一個庫與Cesium結合使用 - https://github.com/chrisveness/geodesy。 計算交叉點是最困難的部分,下面是一個RunKit,描述如何去做 - https://runkit.com/hnipps/calculate-geodesic-intersection – HNipps