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);