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 に答える