Как автоматически определить полигон вокруг линий или точки?

Всем привет! Первый раз сталкиваюсь с подобной задачей. Как определить полигон вокруг линий с помощью Google Maps API как показано на скриншоте? Расстояние от точки до линий должно быть 10 м.

Куда копать, как называются алгоритмы или может быть методы Google Maps API которые позволяют такое делать?

620a2b9abe70d462163031.png
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
twobomb
@twobomb
function getRects(dots,padding  = 30){		//dots - Array[{x:x,y:y} ] 
  if(dots.length == 1)
  	dots = dots.concat([dots[0]]);
	let rects = [];
  	if(dots.length > 1){
    	for(let i = 0; i < dots.length-1;i++){      
      	let angle = getAngle(dots[i].x,dots[i].y,dots[i+1].x,dots[i+1].y);
        rects.push({
        	x1:dots[i].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle+Math.PI),
          y1:dots[i].y  + padding * Math.sin(angle-Math.PI/2) + padding * Math.sin(angle+Math.PI),
          
        	x2:dots[i].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle+Math.PI),
          y2:dots[i].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle+Math.PI),
          
        	x3:dots[i+1].x + padding * Math.cos(angle+Math.PI/2) + padding * Math.cos(angle),
          y3:dots[i+1].y  + padding * Math.sin(angle+Math.PI/2) + padding * Math.sin(angle),
          
        	x4:dots[i+1].x + padding * Math.cos(angle-Math.PI/2) + padding * Math.cos(angle),
          y4:dots[i+1].y  + padding * Math.sin(angle-Math.PI/2)  + padding * Math.sin(angle),
          
        });
      }
    }
    return rects;
}
//Получить угол между двумя точками
function getAngle(dx, dy, dx1, dy1) {
  return Math.atan2(dy - dy1, dx - dx1) + Math.PI;
}

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы