0

我正在学习 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/

4

1 回答 1

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/

于 2013-03-25T13:33:43.383 回答