0

私は変換を行い、それを使用して 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);

今、私はレンダリングした正確なメッシュを返したいので、衝突チェックを行うことができます。唯一の問題は、メッシュを返すと、変換されていないメッシュが返されることです。だから私は次のようにポリゴンオブジェクト(メッシュ)に変換を設定しようとしました:

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

残念ながら、at.createTransformedShape() は、Path2D.Double にのみキャストできる Shape を返します。したがって、Path2D.Double を Polygon に変換する方法を知っている人、または変換をメッシュに設定する別の方法を知っている人は助けてください。

4

1 に答える 1

1

AffineTransform#createTransformedShapeが sに対して望ましい結果を提供しない場合(その場合のように)、をs にPolygon分割し、それぞれを変換して、新しい に結合できます。試す:PolygonPointPointPolygon

//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<mesh.npoints; i++){
  Point2d p = new Point2d.Double(x[i], y[i]);
  at.transform(p,p);
  rx[i]=p.x;
  ry[i]=p.y;
}

mesh = new Polygon(rx, ry, mesh.npoints)
于 2012-11-12T17:09:17.233 に答える