0

我生成 1000 个随机点,我想围绕由 x 和 y 定义的某个点旋转这些点。

我用过:

px = Math.cos(theta) * (px-ox) - Math.sin(theta) * (py-oy) + ox

py = Math.sin(theta) * (px-ox) + Math.cos(theta) * (py-oy) + oy

但问题是点开始收敛,旋转一段时间后到旋转点。

这是javascript代码。 http://www.kaotik.si/rotation1.html

我做错了什么?

代码的迭代部分:

for (var i = 0; i < tocke.length; i++) 
{
    px = tocke[i]["x"];
    py = tocke[i]["y"];
    r = tocke[i]["r"];
    g = tocke[i]["g"];
    b = tocke[i]["b"];

    theta = 0.1;
    ox = centerX;
    oy = centerY;
    px = Math.cos(theta) * (px-ox) - Math.sin(theta) * (py-oy) + ox
    py = Math.sin(theta) * (px-ox) + Math.cos(theta) * (py-oy) + oy
    tocke[i]["x"] = px;
    tocke[i]["y"] = py;

    draw_point(px,py,r,g,b,1);
}

编辑:感谢您解决问题:我确实必须更改为:

theta = 0.1;
ox = centerX;
oy = centerY;
tmpX = Math.cos(theta) * (px-ox) - Math.sin(theta) * (py-oy) + ox
tmpY = Math.sin(theta) * (px-ox) + Math.cos(theta) * (py-oy) + oy
tocke[i]["x"] = tmpX;
tocke[i]["y"] = tmpY;
draw_point(px,py,r,g,b,1);
4

1 回答 1

4

您在将其用于计算px 之前py重新分配。

于 2013-01-20T21:32:37.247 回答