1

2D ベクトル (ポイント) を回転させるために Javascript で回転関数を作成しました。

関数の Y 出力は期待どおりに機能しますが、X 値はクレイジーな数値を出力しています。私のロジックでフロアを指摘できる人はいますか?

Vector2.prototype.rotate = function(degrees){

    var angle = degrees * TO_RADIANS; //Convert to radians.
    var x =  (this.getX() * Math.cos(angle)) - (this.getY() * Math.sin(angle));
    var y = (this.getX() * Math.sin(angle)) + (this.getY() * Math.cos(angle));
    return new Vector2(x,y);
};

Vector(1,0) をこの関数に 90 度回転させて入力すると、6.someDecimalPlaces e-17; が出力されます。これは明らかに間違っています。

ただし、出力された Y 値は期待どおりに機能し、1 を返します。

前もって感謝します

4

1 に答える 1

1

表示されている「6.someDecimalPlaces e-17」は、Javascript の浮動小数点数の処理によるものです。表示されているのは、2 進浮動小数点から 10 進への変換での丸め誤差です。この問題を解決しようとするライブラリはありますが、これを簡単に修正することはできません。

ピクセルパーフェクトな CSS 操作のために丸められた数値が必要な場合は、この関数から出力される数値を丸めるか、整数にキャストすることをお勧めします。

于 2013-11-25T09:29:08.740 に答える