gpt4 book ai didi

Java简单绕点旋转

转载 作者:行者123 更新时间:2023-11-29 07:58:46 25 4
gpt4 key购买 nike

我正在尝试使用这种方法来旋转一个点:

 AffineTransform at = AffineTransform.getRotateInstance(Math.toRadians(90), 1, 2);
double[] pt = {0, 1};
at.transform(pt, 0, pt, 0, 1);
int x = (int)pt[0];
int y = (int)pt[1];

预期的结果是 x=0y=3 因为我们顺时针旋转 90*,但是当前输出是 x=2y=1;

为什么我没有得到预期的结果?

最佳答案

程序没有做错任何事。通过指定 Math.toRadians(90) 作为您的 theta,您指示它逆时针旋转,而不是顺时针旋转。这就是三角学中旋转的定义方式。

使用 -Math.toRadians(90) 会得到正确的结果。

此外,作为旁注,将点值转换为 int 并不是检查代码的最佳方法。 double 三角函数很容易出现非常小的错误,所以在错误方向上的一个小颠簸会让你得到错误的整数。 (即,2.99999999995 将转换为 2)

(int) Math.round(value) 更安全

关于Java简单绕点旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15853742/

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