Java:通过指定的度数值围绕另一个旋转点

2023-09-25Java开发问题
1

本文介绍了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:通过指定的度数值围绕另一个旋转点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13