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

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

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

620a2b9abe70d462163031.png
  • Вопрос задан
  • 94 просмотра
Решения вопроса 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;
}

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

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

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час