gpt4 book ai didi

php - 如何在 R^2 中进行旋转?

转载 作者:可可西里 更新时间:2023-10-31 22:59:32 24 4
gpt4 key购买 nike

我遇到了一个看似简单的数学问题:我需要在二维笛卡尔坐标系中旋转点,即我有一个由 (x/y) 和角度 gamma 给出的点,我需要得到如果通过 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 度的角度,但任何其他角度都会导致完全废话!

即:

如果 x=1 且 y=1 且 gamma=45°,则结果点将准确位于 x 轴上……好吧 - 上面的脚本将输出:

x: 1
y: 1
gamma: 45
x2: 1.11022302463E-16
y2: 1.41421356237

我是不是理解错了? (学校对我来说已经结束了很长时间^^)我该怎么做?

最佳答案

您的数字实际上看起来几乎就在那里——(1,1) 围绕原点旋转 45 度就是 (0, sqrt(2))。 x2 看起来很奇怪,因为前面是 1,但 E-16 表示数字实际上是 .000000000000000111022 或类似的东西。并且 sqrt(2) 出现在 1.414 左右。

由于浮点舍入误差,您不会得到准确的结果(更不用说您正在处理无理数)。

关于php - 如何在 R^2 中进行旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3524448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com