用Java旋转矩形
我需要创建围绕其中心旋转的矩形(因此它们不必平行于坐标系的轴)。因此,基本上每个矩形都可以由 , ,
, 和
。然后,我要做的是对这些矩形中是否包含某些点进行计算(因此不会涉及任何绘图)。我想我不能使用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旋转矩形 的全部内容, 来源链接: utcz.com/qa/418291.html