为什么不是圆圈?

时间:2013-03-25 13:27:39

标签: javascript graphics 2d geometry curve

我正在学习2D图形,我正在尝试绘制圆形,但是我得到了一些奇怪的曲线。

function rotatePoint (point, centerPoint, theta) {
    point[0] = point[0] - centerPoint[0];
    point[1] = point[1] - centerPoint[1];
    point[0] = point[0]*Math.cos(theta)-point[1]*Math.sin(theta);
    point[1] = point[0]*Math.sin(theta)+point[1]*Math.cos(theta);
    point[0] = point[0] + centerPoint[0];
    point[1] = point[1] + centerPoint[1];
}

公式似乎很好,但是......我不知道,我无法弄清楚:/ ...感谢您的帮助。 http://jsfiddle.net/nQvGT/173/

1 个答案:

答案 0 :(得分:1)

您正在更改一个值,然后在计算另一个值时使用它。您必须首先使用原始值计算两个值,然后设置它们:

var p0 = point[0]*Math.cos(theta)-point[1]*Math.sin(theta);
var p1 = point[0]*Math.sin(theta)+point[1]*Math.cos(theta);
point[0] = p0;
point[1] = p1;

演示:http://jsfiddle.net/Guffa/nQvGT/174/