我生成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);
答案 0 :(得分:4)
您在重新分配px
之前它会在py
的计算中使用。