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?