4 Stimmen

AffineTransform und Spiegelung der y-Achse

Ich bin auf ein seltsames Problem gestoßen, als ich versucht habe, die y-Achse eines Koordinatensystems zu spiegeln, das ich erstellt habe:

   private AffineTransform getTransform() {
        if (transform == null) {
            transform = new AffineTransform();
            double scaleX = (double) this.getWidth() / (coordinateSystem.getMaxX() - coordinateSystem.getMinY());
            double scaleY = (double) this.getHeight() / (coordinateSystem.getMaxY() - coordinateSystem.getMinY());
            transform.setToScale(scaleX, scaleY);
            double deltaX = (coordinateSystem.getMaxX() - coordinateSystem.getMinX()) / 2;
            double deltaY = (coordinateSystem.getMaxY() - coordinateSystem.getMinY()) / 2;
            transform.translate(deltaX, deltaY);
        }
        return transform;
    }

Die AffineTransform ist auf Skalierung und Verschiebung eingestellt. und alles funktioniert gut, außer dass meine y-Werte invertiert sind (maximaler Wert ist am unteren Rand des Koordinatensystems, minimaler Wert ist am oberen Rand). Ich habe versucht, dies durch Invertieren des Skalierungsfaktors für die y-Achse zu ändern, aber das hat nicht funktioniert.

Muss ich den Transformator um PI rotieren lassen, um die gespiegelte y-Achse zu erreichen? Sollte die Multiplikation des Skalierungsfaktors für die y-Achse mit minus 1 nicht dasselbe bewirken?

4voto

aioobe Punkte 397211

Sie haben einen Tippfehler bei

double scaleX = (double) this.getWidth() / (coordinateSystem.getMaxX() - coordinateSystem.getMinY());

(Letzte Y sollte ein X .) Das war's dann wohl.

1voto

ysap Punkte 7297

Das Drehen um PI ist eigentlich KEINE richtige Lösung, da es sowohl die X-Achse als auch die Y-Achse spiegeln würde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X