我試圖在指定的度數值下圍繞另一個Java中的二維點旋轉,在這種情況下僅在90度的點(0,0)周圍。Java:按指定的度數值圍繞另一個點旋轉點
方法:
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
該方法本身有問題嗎?我將函數(Rotating A Point In 2D In Lua - GPWiki)移植到Java。
編輯:
做了一些性能測試。我不會這麼想,但矢量解決方案贏了,所以我會用這個。
速度夠快嗎?我需要這種方法在遊戲中使用速度非常快。本機例程似乎不是性能優化的。 – Aich 2012-04-03 01:35:29
AWT是爲繪圖而設計的,它通常意味着遊戲 - 所以我不擔心。 – 2012-04-03 04:13:39
@LouisWasserman偉大的工作,非常感謝你 – Aladdin 2013-07-19 00:05:58