AffineTransform rotate geht das auch um einen punkt?

zerrome

Grünschnabel
Hallo zusammen,

ich werde nicht richtig schlau aus der Dokumentation von AffineTransform in Bezug auf rotate (Java2D) .
Mein Problem ist, ich zeichne einen geschlossenen Halbkreis der schwarz gefüllt ist, diesen möchte ich jetzt anhand von Sensor Daten um seinen Mittelpunkt rotieren lassen. Beispiel der Zeichnung:
Code:
Dimension d = getSize();         
int w = d.width/2;
int h = d.height/2;
   
g2.setPaint(Color.BLACK);
//                        x,y,width,hight,start,weite,typ       
myarc = new Arc2D.Double(w, h, 100, 100, 180, 180,Arc2D.CHORD);      
               
g2.fill (myarc);

Beispiel der Drehung:
Code:
Dimension d = getSize();         
int w = d.width/2;
int h = d.height/2;

AffineTransform at = g2.getTransform();
        
at.rotate(Math.toRadians(10),w,h);
    
g2.setTransform(at);
g2.fill(myarc);

Drehe ich den Halbkreis nun wie im Code beschrieben, dreht der sich nicht um seinen Mittelpunkt ! Wie kann ich mit translate oder so das hinbiegen? Oder besser, geht rotate auch um einen punkt, also beispielsweise den Mittelpunkt meines Halbkreises

grüße Zerrome
 
hi,

du rotierst immer um den Ursprungspunkt in deinem Koordinatensystem (0,0). Wenn du also dein Objekt um seinen Mittelpunkt rotieren möchtest, dann musst du vorher den Mittelpunkt des Objekts in den Ursprung verlegen, rotieren, dann wieder zurück verschieben. also sowas wie

translate(-x, -y)
rotate()
translate(x, y)

Ich hoffe das hilft :)
 
Hallo,
das erste Bild zeigt einen Screenshot mit dem Halbkreis gezeichnet in (0,0),
der andere mit :
Code:
Dimension d = getSize();         
int w = (d.width/2)-50;
int h = (d.height/2)-50;
   
g2.setPaint(Color.BLACK);
//                        x,y,width,hight,start,weite,typ       
myarc = new Arc2D.Double(w,h, 100, 100, 180, 180, Arc2D.CHORD);      
               
g2.fill (myarc);

was beim ersten schonmal auffällt, ist das unter linux (0,0) NICHT ganz oben, ganz links ist... vielleicht liegt da schon das Problem...
Wenn ich mich genau an das beschriebene Verfahren halte, verschwindet der Kreis immer auf nimmer wiedersehn... is mir ein Rätsel!
 

Anhänge

  • kreis.jpeg
    kreis.jpeg
    16,2 KB · Aufrufe: 36
  • kreismitte.jpeg
    kreismitte.jpeg
    18 KB · Aufrufe: 33
Zuletzt bearbeitet:
Zurück