這是更多算法問題,但希望有人能幫助我解決這個問題。我有一條由經度/緯度點構成的線條,我想用一些預定義的厚度從它創建一個多邊形。所以基本上多邊形的邊緣會與任何一邊的原始折線平行。有關採取這種最佳方法的任何想法?給出經度/折線厚度
編輯:我目前的計劃是迭代每個點,找到下一個點的斜率,然後找到平行線到任一側和那些構成多邊形的兩側。只是不知道是否有更簡單的方法來做到這一點。
這是更多算法問題,但希望有人能幫助我解決這個問題。我有一條由經度/緯度點構成的線條,我想用一些預定義的厚度從它創建一個多邊形。所以基本上多邊形的邊緣會與任何一邊的原始折線平行。有關採取這種最佳方法的任何想法?給出經度/折線厚度
編輯:我目前的計劃是迭代每個點,找到下一個點的斜率,然後找到平行線到任一側和那些構成多邊形的兩側。只是不知道是否有更簡單的方法來做到這一點。
你想要做的是創建一對新的線,這些線稍微偏移到原始線的左側和右側。所以:
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}
},
];
}
道路的接縫處會有小縫隙,旨在填充它們的小三角形。 – Anubha 2013-02-07 07:15:11