如何在Java中将转换应用于Polygon对象

我做了一个变换并用它渲染了一个Polygon对象(网格是Polygon类型):

at.setToTranslation(gameObject.position.x, gameObject.position.y); at.rotate(Math.toRadians(rotation)); at.scale(scale, scale); g2d.setTransform(at); g2d.fillPolygon(mesh); 

现在我想返回我渲染的确切网格,以便我可以对它进行碰撞检查。 唯一的问题是,如果我返回网格,它返回未转换的网格。 所以我尝试将变换设置为Polygon对象(网格),如下所示:

  mesh = (Polygon)at.createTransformedShape(mesh); 

但不幸的是at.createTransformedShape()返回一个只能转换为Path2D.Double的Shape。 所以,如果有人知道如何将Path2D.Double转换为Polygon或知道另一种方式来设置网格的转换请帮助。

如果AffineTransform#createTransformedShape没有为Polygon提供所需的结果(看起来就是这种情况),您可以将Polygon分割为Point ,转换每个Point并组合成一个新的Polygon 。 尝试:

 //Polygon mesh //AffineTransform at int[] x = mesh.xpoints; int[] y = mesh.ypoints; int[] rx = new int[x.length]; int[] ry = new int[y.length]; for(int i=0; i