我正在寻找一种方法来检索五个点,这些点将在给定的中心和给定的距离周围形成一个五边形。
类似这样的东西:
getPentagonPoints = (latlng, distance) => {
var pentagonLatLng = [];
//magic calculations goes here
return pentagonLatLng;
}
答案 0 :(得分:0)
您可以这样做:
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>