私は数学で一見単純な問題に悩まされています:2次元デカルト座標系で点を回転させる必要があります。つまり、(x / y)と角度ガンマで与えられる点があり、の座標を取得する必要がありますガンマで回転した場合のこの点...
例:x=2およびy=0で、回転角が90°の場合、結果のポイントはx'= 0、y' = -2(時計回りに回転)になります。
だから私はネット( http://en.wikipedia.org/wiki/Rotation_matrix )でこの式を見つけ、それをテストするためにいくつかのコードを実装しました:
$x = 1; echo "x: " . $x . "<br>";
$y = 1; echo "y: " . $y . "<br>";
$gamma = 45; echo "gamma: " . $gamma . "<br>";
$sinGamma = sin(deg2rad($gamma));
$cosGamma = cos(deg2rad($gamma));
$x2 = $x*$cosGamma - $y*$sinGamma; echo "x2: " . $x2 . "<br>";
$y2 = $y*$cosGamma + $x*$sinGamma; echo "y2: " . $y2 . "<br>";
これは90/180/270度の角度でうまく機能しますが、それ以外の場合は完全にがらくたになります。
すなわち:
x=1およびy=1およびgamma=45°の場合、結果のポイントは正確にx軸上に配置されます...まあ-上記のスクリプトは次のように出力します。
x: 1
y: 1
gamma: 45
x2: 1.11022302463E-16
y2: 1.41421356237
私はsthが間違っていることを理解しましたか?(私にとって学校は長い間続いています^^)どうすればこれを正しく行うことができますか?