Hallo,
ich versuche ein BufferedImage um 45° um die z-Achse zu drehen und dann um 45° um die x-Achse.
Das drehen um die x Achse mache ich, indem ich die Höhe des Bildes einfach mit 0.5 Skaliere.
Das ganz soll ein kleines Hilfsprogramm werden, um aus 100px*100px Bildern Isometrisch Tiles zu machen.
Das Ganze funktioniert auch, aber:
Das Bild wird am ende an der Falschen Position gezeichnet:
Ausgangs Bild:
Das Bild das raus kommt:
(Ohne Alpha, damit man die Größe des Bildes sieht)
Die Funktion, in der der Fehler auftritt.
Mir ist bewusst, das sie dringend Refactoring benötigt, es geht momentan aber nur um einen Versuch, wie es klappen könnte.
Also, ich wer dankbar, wenn mir jemand sagen könnte, warum das Tile verschoben gezeichnet wird.
Wer mit hilft bekommt als Belohnung ein Fettes
Danke*
*verkleinerte Abbildung
ich versuche ein BufferedImage um 45° um die z-Achse zu drehen und dann um 45° um die x-Achse.
Das drehen um die x Achse mache ich, indem ich die Höhe des Bildes einfach mit 0.5 Skaliere.
Das ganz soll ein kleines Hilfsprogramm werden, um aus 100px*100px Bildern Isometrisch Tiles zu machen.
Das Ganze funktioniert auch, aber:
Das Bild wird am ende an der Falschen Position gezeichnet:
Ausgangs Bild:
Das Bild das raus kommt:
(Ohne Alpha, damit man die Größe des Bildes sieht)
Die Funktion, in der der Fehler auftritt.
Java:
private static BufferedImage rotateImage(BufferedImage src, double degrees) {
int width;
int height;
Point urs = new Point(src.getWidth() / 2,src.getHeight() / 2);
Point p1 = rotatepoint360(new Point(),urs,degrees);
Point p2 = rotatepoint360(new Point(src.getWidth(),src.getHeight()),urs,degrees);
height = (int) (p2.getY() - p1.getY());
Point p3 = rotatepoint360(new Point(0,src.getHeight()),urs,degrees);
Point p4 = rotatepoint360(new Point(src.getWidth(),0),urs,degrees);
width = (int) (p4.getX() - p3.getX());
AffineTransform affineTransform = AffineTransform.getRotateInstance(
Math.toRadians(degrees), src.getWidth() / 2,
src.getHeight() / 2);
BufferedImage rotatedImage = new BufferedImage(width,
height, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g = (Graphics2D) rotatedImage.getGraphics();
g.setTransform(affineTransform);
g.drawImage(src, 0, 0, null);
return rotatedImage;
}
Mir ist bewusst, das sie dringend Refactoring benötigt, es geht momentan aber nur um einen Versuch, wie es klappen könnte.
Also, ich wer dankbar, wenn mir jemand sagen könnte, warum das Tile verschoben gezeichnet wird.
Wer mit hilft bekommt als Belohnung ein Fettes
Danke*
*verkleinerte Abbildung
Zuletzt bearbeitet: