문제

이것은 알고리즘 질문에 더 가깝지만 누군가가 나를 도울 수 있기를 바랍니다. 위도/경도 지점으로 만든 선이 있으며 사전 정의 된 두께로 다각형을 만들고 싶습니다. 따라서 기본적으로 다각형에는 양쪽의 원래 폴리 라인과 평행하게 작동하는 가장자리가 있습니다. 이것에 대한 최선의 접근 방식에 대한 생각이 있습니까?

편집 : 내 현재 계획은 각 지점을 반복하고 다음 지점의 경사면을 찾은 다음 양쪽의 평행선을 찾아 다각형의 측면을 구성하는 것입니다. 더 쉬운 방법이 있는지 몰랐습니다.

도움이 되었습니까?

해결책

당신이하고 싶은 것은 원래 줄의 왼쪽과 오른쪽으로 약간 이동하는 새로운 라인을 만드는 것입니다. 그래서:

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

다른 팁

내가 당신의 질문을 이해한다면 그것은 이것 하나는 이미 매우 자세한 답변이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top