我遇到了一个看似简单的数学问题:我需要在二维笛卡尔坐标系中旋转点,即我有一个由 (x/y) 给出的点和一个角度 gamma,我需要得到坐标这个点如果被伽马旋转......
示例:如果 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 度的角度非常有效,但其他任何事情都会导致完全废话!
IE:
如果 x=1 且 y=1 且 gamma=45°,则结果点将恰好位于 x 轴上……好吧 - 上面的脚本将输出:
x: 1
y: 1
gamma: 45
x2: 1.11022302463E-16
y2: 1.41421356237
我理解错了吗?(学校对我来说已经很长时间了^^)我如何才能做到这一点?