如何在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