我需要創建圍繞其中心旋轉的矩形(因此它們不需要平行於座標系的軸)。所以basicelly每個矩形可以通過中心-X,中心-Y,寬度,高度和角度來限定。那麼我想要做的是對這些矩形中是否包含某些點進行計算(因此不涉及任何繪圖)。我想我不能使用Rectangle2D
類,因爲這些矩形將總是平行於座標系的x和y軸。通過編寫我自己的矩形類來獲得此功能的唯一方法是否存在(類似於Rectangle2D
)我可以使用?在Java中旋轉矩形
4
A
回答
5
旋轉所有要測試的點,並使用Mihai所做的Rectangle2D的contains(Point)方法。
但是,如果你真的想旋轉矩形,你可以這樣做(這是整數版本,但可能你可以用Rectangle2D做:))。
public class TestRotate {
public static void main(String... args) {
Rectangle r = new Rectangle(50, 50, 100, 100);
Point check = new Point(100, 151); // clearly outside
System.out.println("first: " + r.contains(check));
AffineTransform at = AffineTransform.getRotateInstance(
Math.PI/4, r.getCenterX(), r.getCenterY());
Polygon p = new Polygon();
PathIterator i = r.getPathIterator(at);
while (!i.isDone()) {
double[] xy = new double[2];
i.currentSegment(xy);
p.addPoint((int) xy[0], (int) xy[1]);
System.out.println(Arrays.toString(xy));
i.next();
}
// should now be inside :)
System.out.println("second: " + p.contains(check));
}
}
+0
我們從哪裏得到Polygon Class? – 2014-05-27 04:29:00
+0
java.awt.Polygon – 2016-07-11 05:54:53
3
您可以使用Rectangle2D檢查包容,如果不是通過角度旋轉矩形(例如逆時針旋轉),而是旋轉每個需要按相同角度順時針旋轉相對於矩形中心點的點。類似於
double dx = point.x - rectangleCenter.x;
double dy = point.y - rectangleCenter.y;
double newX = rectangleCenter.x - dx*Math.cos(angle) + dy*Math.sin(angle);
double newY = rectangleCenter.x - dx*Math.sin(angle) - dy*Math.cos(angle);
相關問題
- 1. 如何在JAVA中旋轉AWT矩形?
- 2. 旋轉Java Graphics2D矩形?
- 3. Java - 旋轉矩形碰撞
- 4. 使用旋轉矩陣旋轉Java中的矩形
- 5. 旋轉矩形?
- 6. java的旋轉矩形圍繞中心
- 7. cgcontext旋轉矩形
- 8. 旋轉矩形 - C#
- 9. Java GUI旋轉和矩形的翻譯
- 10. 矩形旋轉和翻轉
- 11. 畫布像矩形輪旋轉矩形
- 12. 當旋轉外部矩形時,在矩形內移動矩形
- 13. 在libgdx中使用ShapeRenderer旋轉矩形
- 14. 在Android中旋轉矩形位圖
- 15. WPF在XAML中旋轉矩形動畫
- 16. JavaFX在其轉角處旋轉矩形
- 17. 繪製旋轉的矩形
- 18. 2D旋轉矩形碰撞
- 19. 旋轉一個矩形
- 20. 旋轉矩形碰撞
- 21. 如何旋轉矩形?
- 22. C++/OpenGL - 旋轉矩形
- 23. 約計與旋轉矩形
- 24. 旋轉矩形需要
- 25. 旋轉矩形的點
- 26. 矩形旋轉90度libgdx
- 27. 旋轉矩形圍繞SVG
- 28. 爪哇旋轉矩形
- 29. 在java swing中圍繞圓弧旋轉矩形
- 30. 在Java中旋轉矩陣混淆
我得到了一個印象,你正在描述你發現某個問題的解決方案。也可以解釋你想要解決的具體問題。很可能,現在已經有針對這個問題的已經證明的解決方案/算法。 – 2010-11-10 14:51:08
我想模擬智能天線。所以每個矩形的中心是一個節點(有幾個智能天線)。矩形然後是簡化的信號模式。這意味着矩形將被旋轉,以便它們指向接收器節點的方向。然後,我想計算某些天線是否處於可能被此信號干擾的信號模式/矩形中。因此,我需要一種方法來計算一個點是否包含在一個矩形中。 – gaussd 2010-11-10 14:59:01