Java: Rotate Point around another by specified degree value(Java:通过指定的度数值围绕另一个旋转点)
问题描述
我正在尝试将 java 中的二维点围绕另一个具有指定度数的点旋转,在这种情况下,只是围绕点 (0, 0) 旋转 90 度.
I am trying to rotate a 2D Point in java around another with a specified degree value, in this case simply around Point (0, 0) at 90 degrees.
方法:
public void rotateAround(Point center, double angle) {
x = center.x + (Math.cos(Math.toRadians(angle)) * (x - center.x) - Math.sin(Math.toRadians(angle)) * (y - center.y));
y = center.y + (Math.sin(Math.toRadians(angle)) * (x - center.x) + Math.cos(Math.toRadians(angle)) * (y - center.y));
}
期望 (3, 0):X = 0,Y = -3
Expected for (3, 0): X = 0, Y = -3
为 (3, 0) 返回:X = 1.8369701987210297E-16,Y = 1.8369701987210297E-16
Returned for (3, 0): X = 1.8369701987210297E-16, Y = 1.8369701987210297E-16
期望 (0, -10):X = -10, Y = 0
Expected for (0, -10): X = -10, Y = 0
返回 (0, -10):X = 10.0, Y = 10.0
Returned for (0, -10): X = 10.0, Y = 10.0
方法本身有问题吗?我将函数从 (Rotating A Point In 2D In Lua - GPWiki) 移植到 Java.
Is something wrong with the method itself? I ported the function from (Rotating A Point In 2D In Lua - GPWiki) to Java.
做了一些性能测试.没想到,矢量解赢了,所以我就用这个.
Did some performance tests. I wouldn't have thought so, but the vector solution won, so I'll use this one.
推荐答案
如果你可以访问java.awt
,这只是
If you have access to java.awt
, this is just
double[] pt = {x, y};
AffineTransform.getRotateInstance(Math.toRadians(angle), center.x, center.y)
.transform(pt, 0, pt, 0, 1); // specifying to use this double[] to hold coords
double newX = pt[0];
double newY = pt[1];
这篇关于Java:通过指定的度数值围绕另一个旋转点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Java:通过指定的度数值围绕另一个旋转点
基础教程推荐
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 降序排序:Java Map 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01