gpt4 book ai didi

java - 在 Java 中旋转矩形

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:48 37 4
gpt4 key购买 nike

我需要创建围绕其中心旋转的矩形(因此它们不需要平行于坐标系的轴)。所以基本上每个矩形都可以由 center-Xcenter-Ywidthheight 定义>角度。然后我想做的是计算这些矩形中是否包含某些点(因此不会涉及绘图)。我想我不能使用 Rectangle2D 类,因为这些矩形将始终平行于坐标系的 x 轴和 y 轴。是通过编写我自己的矩形类来获得此功能的唯一方法,还是有任何现有的东西(类似于 Rectangle2D)我可以使用?

最佳答案

旋转所有你想测试的点,像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));
}
}

关于java - 在 Java 中旋转矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4145609/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com