2010-12-21 8 views
4

I in ein seltsames Problem lief beim Versuch, die y-Achse eines Koordinatensystems zu drehen, dass die Schaffung IM:Affine und Umlegen der y-Achse

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 Affine wird auf Skalierung und Übersetzung. und alles funktioniert gut, außer dass meine y-Werte invertiert sind (der maximale Wert ist ein Wert im unteren Teil des Koordinatensystems, der Wert für den kleinsten Wert ist oben). Ich habe versucht, dies zu ändern, indem ich den Skalierungsfaktor für die Y-Achse invertierte. aber das hat nicht funktioniert.

Muss ich die Transformation durch PI drehen lassen, um die gekippte Y-Achse zu erhalten? Sollte der Skalierungsfaktor für die y-Achse nicht mit minus 1 multipliziert werden?

Antwort

4

Sie haben einen Tippfehler auf

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

(Last Y sollte ein X sein.) Vielleicht ist es.

+0

Jesus Dank wird Flip! ich verlor haare wegen dieses f **** ers;) – fasseg

1

von PI Dreh ist eigentlich keine richtige Lösung überhaupt, da es die X-Achse als auch der Y

+0

ihr sir, habt recht;) – fasseg

Verwandte Themen