我有几点意见。我需要将这些点放在一个圆上并得到它们的坐标。
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
在圆圈上它不起作用。
答案 0 :(得分:2)
那是因为你没有在sin()和cos()函数中使用radiants。你需要将天使转换为辐射。看看sin()的function description,你会发现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);
}
答案 1 :(得分:2)
cos()和sin()函数期望以弧度为单位的参数,而不是度数。
使用deg2rad()功能转换
修改强>
CODE:
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