2009-09-30 55 views
3

這是更多算法問題,但希望有人能幫助我解決這個問題。我有一條由經度/緯度點構成的線條,我想用一些預定義的厚度從它創建一個多邊形。所以基本上多邊形的邊緣會與任何一邊的原始折線平行。有關採取這種最佳方法的任何想法?給出經度/折線厚度

編輯:我目前的計劃是迭代每個點,找到下一個點的斜率,然後找到平行線到任一側和那些構成多邊形的兩側。只是不知道是否有更簡單的方法來做到這一點。

回答

1

你想要做的是創建一對新的線,這些線稍微偏移到原始線的左側和右側。所以:

var polygon = [ 
    {x:0, y:0}, 
    {x:10, y:0}, 
    {x:10, y:10}, 
    {x:0, y:10} 
]; 
var outerPolygon = []; 
var innerPolygon = []; 
for(var i=1; i<polygon.length; i++){ 
    var ret = newLines(polygon[i-1], polygon[i]); 
    outerPolygon.push(ret[0]); 
    innerPolygon.push(ret[1]); 
} 
function newLines(start, stop){ 
    var dx = start.x - stop.x; 
    var dy = start.y - stop.y; 
    var d = Math.sqrt(dx*dx + dy*dy); 
    dx /= d; 
    dy /= d; 
    var rNormal = {dx: dy, dy:-dx}; 
    var lNormal = {dx: -dy, dy:dx}; 
    return [ 
    {start:{ 
     x:start.x+rNormal.dx, 
     y:start.y+rNormal.dy}, 
    stop:{ 
     x:stop.x+rNormal.dx, 
     y:stop.y+rNormal.dy} 
    }, 
    {start:{ 
     x:start.x+lNormal.dx, 
     y:start.y+lNormal.dy}, 
    stop:{ 
     x:stop.x+lNormal.dx, 
     y:stop.y+lNormal.dy} 
    }, 
    ]; 
} 
+0

道路的接縫處會有小縫隙,旨在填充它們的小三角形。 – Anubha 2013-02-07 07:15:11

1

如果我明白你的問題是一樣的this一個,已經有一些非常詳細的解答。

+0

是的,看起來很近。謝謝。 – 2009-09-30 12:00:06