我将尝试在Java中旋转2D点,使其绕另一点旋转指定度数。在这种情况下,只需绕点(0, 0)旋转90度。
方法:
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
返回结果为(3,0):X = 1.8369701987210297E-16,Y = 1.8369701987210297E-16
期望结果为(0,-10):X = -10,Y = 0
返回结果为(0,-10):X = 10.0,Y = 10.0
方法本身是否有问题?我将该函数从Lua中旋转二维点的方法移植到Java。
编辑:
进行了一些性能测试。 我本以为向量解决方案会输,但它获胜了,所以我将使用这个。