用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

回到顶部