【问题标题】:Using Affine Transform to rotate polygon使用仿射变换旋转多边形
【发布时间】:2013-04-01 00:42:31
【问题描述】:

我目前正在尝试使用仿射变换类旋转多边形。使用旋转方法,多边形的图形表示会更新,但多边形的边界框不会更新。除了更新它的坐标之外,我如何旋转多边形?

【问题讨论】:

  • 多边形的“边界框”是什么意思?您是否将其存储为多边形的一部分?

标签: java polygon


【解决方案1】:

创建一个新形状,而不是在绘制多边形时只旋转多边形。例如:

Polygon shape = new Polygon();
shape.addPoint(...);
....
Rectangle bounds = shape.getBounds();
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(angle), bounds.width / 2, bounds.height / 2);

Path2D path = (shape instanceof Path2D) ? (Path2D)shape : new GeneralPath(shape);
Shape rotated = path.createTransformedShape( transform );
System.out.println(rotated.getBounds());

【讨论】:

  • 创建新形状似乎可行,并为我提供了更新的坐标。但是我不太明白路径部分......多边形怎么可能是 Path2d 的一个实例?
  • 不是,这就是代码进行检查的原因。在这种情况下,首先将 Polygon 转换为 GeneralPath,因此可以对其进行旋转。 (我刚刚更新了代码,以便使用“形状”变量而不是我最初拥有的“多边形”变量。希望这更有意义)
猜你喜欢
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多