Расчет широты / долготы для пятиугольника вокруг центра - PullRequest
0 голосов
/ 01 января 2019

Я ищу способ получить пять точек, которые бы образовали пятиугольник вокруг заданного центра и заданного расстояния.

Примерно так:

getPentagonPoints = (latlng, distance) => {
  var pentagonLatLng = [];
  //magic calculations goes here
  return pentagonLatLng;
}

1 Ответ

0 голосов
/ 01 января 2019

Вы можете сделать это так:

function getPentagonPoints(latlng, distance) {
  var pentagonLatLng = [];
  for (let i = 0; i < 5; i++) {
    // Pi * 2 is 360 degrees, in radians
    // We add 270 degrees (Pi * 1.5 radians) to start at the top
    const angle = Math.PI * 2 / 5 * i + Math.PI * 1.5; // in radians
    const lng = distance * Math.cos(angle) + latlng.lng;
    const lat = distance * Math.sin(angle) + latlng.lat;
    pentagonLatLng.push({lat, lng});
  }
  return pentagonLatLng;
}

// Just for the demo
const canvas = document.querySelector('canvas');
const ctx = canvas.getContext('2d');

const latLng = { lat: 90, lng: 200 };
const points = getPentagonPoints(latLng, 50);

points.forEach((point, i) => {
  if (i === 0) { ctx.moveTo(point.lng, point.lat); }
  ctx.lineTo(point.lng, point.lat);
  if (i === points.length - 1) { ctx.lineTo(points[0].lng, points[0].lat); }
});

ctx.stroke();
<canvas width="400" height="160"></canvas>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...