gpt4 book ai didi

algorithm - 给出纬度/经度折线厚度

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:24 25 4
gpt4 key购买 nike

这更像是一个算法问题,但希望有人能帮助我解决这个问题。我有一条由纬度/经度点组成的线,我想从中创建一个具有预定义厚度的多边形。所以基本上多边形的边会在两侧与原始多段线平行。关于为此采取的最佳方法有什么想法吗?

编辑:我目前的计划是遍历每个点,找到下一个点的斜率,然后找到两侧的平行线,这些平行线构成了多边形的边。只是不知道是否有更简单的方法。

最佳答案

您要做的是创建一对新线,将它们稍微向原始线的左侧和右侧移动。所以:

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}
},
];
}

关于algorithm - 给出纬度/经度折线厚度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1495931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com