Я придумал этот пример, чтобы вы знали, как рассчитать баллы. Вам нужно будет выяснить, как сделать необходимые преобразования для широты / долготы.
/**
* Returns coordinates for N points around a circle with a given radius from
* the center.
*
* center: array [x, y]
* radius: int
* num_points: int
*/
function get_points_on_circle(center, radius, num_points) {
if (!num_points) num_points = 10;
var interval = Math.PI * 2 / num_points;
points = [];
i = -1;
while (++i < num_points) {
var theta = interval * i,
point = [Math.cos(theta) * radius + center[0], Math.sin(theta) * radius + center[1]];
points.push(point);
}
return points;
}
// Sample usage
var center = [250, 250],
radius = 100,
num_points = 10;
var points = get_points_on_circle(center, radius, num_points);
Проверьте это (использует Рафаэля для построения графика)
Если вам интересно немного узнать о логике:
Радиан - это единица измерения углов. Всего в круге 2 * пи радианы. Используя этот факт, вы можете вычислить угловой интервал любого количества точек на окружности, выполнив 2*PI/num_points
.
Когда вы знаете угловой интервал, вы можете вычислить угол (тета) точки на окружности. Если у вас есть тета (угол), у вас есть полярные координаты (радиус, угол). Чтобы это пригодилось нам в этой задаче, вам необходимо преобразовать полярные координаты в декартовы (x, y). Вы можете сделать это, используя следующие формулы:
х = соз (тета) * радиус
у = грех (тета) * радиус
Это в значительной степени все в двух словах.