Как получить координаты нескольких точек на круге с php

У меня есть несколько моментов. Мне нужно наложить эти точки на круг и получить их координаты.

function positionX($numItems,$thisNum){ $alpha = 360/$numItems; // angle between the elements $r = 1000; // radius $angle = $alpha * $thisNum; // angle for N element $x = $r * cos($angle); // X coordinates return $x; } function positionY($numItems,$thisNum){ $alpha = 360/$numItems; // angle between the elements $r = 1000; // radius $angle = $alpha * $thisNum; // angle for N element $y = $r * sin($angle); // Y coordinates return $y; } 

Но мой код не работает. Эти функции создают странные координаты.

Пример изображения: http://cl.ly/image/453E2w1Y0w0d

UPD:

 echo positionX(4,1)."<br>"; echo positionY(4,1)."<br><br>"; echo positionX(4,2)."<br>"; echo positionY(4,2)."<br><br>"; echo positionX(4,3)."<br>"; echo positionY(4,3)."<br><br>"; echo positionX(4,4)."<br>"; echo positionY(4,4)."<br><br>"; 

4 – все элементы; 1,2,3,4 – Количество элементов.

Этот код дает мне результат:

 -448.073616129 893.996663601 -598.460069058 0 984.381950633 -176.045946471 -283.691091487 958.915723414 

На круге это не работает.

Функции cos () и sin () ожидают аргумент в радианах, а не в градусах.

Используйте функцию deg2rad () для преобразования

РЕДАКТИРОВАТЬ

КОД:

 function positionX($numItems,$thisNum){ $alpha = 360/$numItems; // angle between the elements $r = 1000; // radius $angle = $alpha * $thisNum; // angle for N element $x = $r * cos(deg2rad($angle)); // X coordinates return $x; } function positionY($numItems,$thisNum){ $alpha = 360/$numItems; // angle between the elements $r = 1000; // radius $angle = $alpha * $thisNum; // angle for N element $y = $r * sin(deg2rad($angle)); // Y coordinates return $y; } echo round(positionX(4,1))."<br>"; echo round(positionY(4,1))."<br><br>"; echo round(positionX(4,2))."<br>"; echo round(positionY(4,2))."<br><br>"; echo round(positionX(4,3))."<br>"; echo round(positionY(4,3))."<br><br>"; echo round(positionX(4,4))."<br>"; echo round(positionY(4,4))."<br><br>"; 

РЕЗУЛЬТАТЫ:

 0 1000 -1000 0 -0 -1000 1000 -0 

Это потому, что вы не используете радианты в своих функциях sin () и cos (). Вам нужно превратить ангелов в радиантов. Посмотрите на описание функции sin (), там вы обнаружите, что arg находится в радиантах.

напоминание

 1° = 2 PI / 360; 

редактировать

Я не могу найти ошибку в вашем коде, попробуйте это вместо

 function($radius, $points, $pointToFind) { $angle = 360 / $points * 2 * pi(); //angle in radiants $x = $radius * cos($angle * $pointToFind); $y = $radius * sin($angle * $pointToFind); }