我有一組用戶路徑(2個暗淡)在遊戲設置中被建模爲一組線(弧)和路點=頂點。整組路徑可以看作是一個圖形,其中邊緣是具有附加屬性(如長度,概率等)的線段。查找所有linesegments =與圖表中某點的距離在一定範圍內,如何將助推圖與助推幾何結合起來?
現在我必須確定一組(直線)線段=與用戶當前位置的距離,以便查找用戶在圖形中的位置。
如何在不重新發明輪子的情況下儘可能簡單實現?如何有效地實現搜索?
我想過使用boost-graph來處理圖形並將其與boost-geometry相結合。 例如看到TrajGraph這在升壓圖形使用捆綁的屬性:
struct Tvertex
{
float x, y; //vertex=waypoint position
};
struct Tarc_segment
{
float len, curvature, prob; //line segment=edge properties
};
typedef adjacency_list<vecS, vecS, directedS, Tvertex, Tarc_segment> TrajGraph;
爲了存儲線段爲邊屬性還可以加上升壓幾何模型::線串,並使用升壓幾何形狀的近鄰查詢找到
現在線段。但是,afaik boost-geometry不允許將屬性附加到linestrings,就像boost-graph一樣。因此如何從線串(s)中獲得邊緣?
一個簡單的蠻力解決方案可能是遍歷圖的整個邊界列表並計算到每個線段的距離。有關如何計算到直線段的距離,請參見here和here。
這是兩個維度? –
是的,在2維 – spinxz