2009-08-18 12 views
0

Ich bin an einem Projekt arbeiten, das mich einfach geometrische Transformationen zu tun erfordert:Reflexionen und andere Transformationen mit Java Polygonen

  • Übersetzung
  • Reflexion über x- und y-Achse

Auf einigen Abbildungen gezeichnet auf einem Java Applet.

Der vorherige Typ, der an dem Applet arbeitete, zeichnete die Zahlen aus Arrays, die die Karettenpunkte für die Eckpunkte jeder Figur darstellten.

entschied ich mich, die Zahlen als Polygonen darzustellen, weil es einige schönere Organisation zum Code hinzugefügt, ich die Arrays verwenden konnte er wurde mit einem, zu konstruieren und auch, weil ich Transformationen leichter geworden wäre dachte.

Nach dem Auffinden Polygon keine Methoden zur Reflexion hatte, habe ich versucht, einen anderen Weg:

ich das Polygon als Form gegossen, dann ein Gebiet, und angewandter dann eine AffineTransform das getan haben sollte, was ich wollte; Leider verfügt Graphics nicht über eine Methode zum Zeichnen von Area-Objekten, und ich konnte keine Form zurückgeben.

Also weiß jemand eine Möglichkeit, geometrische Reflexion mit Polygonen zu tun? Oder gibt es andere Mittel, durch die ich das durchführen könnte?

Antwort

2

Gibt es einen Grund, warum Sie nicht einfach Ihre eigenen Funktionen dafür schreiben können? Wie:

Polygon reflectX(Polygon p) { 
    Polygon np = new Polygon(); 
    for (int i = 0; i < p.npoints; i++) { 
     np.addPoint(p.xpoints[i], -p.ypoints[i]); 
    } 
    return np; 
} 
+0

Implementiert einfach Methoden, die jeden Punkt an die richtige Position bewegt, wie Jonathan gerade getan hat. –

+0

Mein einziges Problem ist, dass ich den Ursprung nicht bewegen kann, ohne anderen Code im Applet zu brechen, so dass diese negativen Punkte die Figuren vom sichtbaren Bereich abziehen. –

+0

Aber wenn negative Punkte außerhalb des sichtbaren Bereichs liegen, wie haben Sie dann Reflexionen gemacht? Vielleicht möchten Sie eigentlich zwei Ebenen haben - ein Backend, das alle Berechnungen ordnungsgemäß mit euklidischer Geometrie durchführt, und ein Frontend, das diese an die entsprechenden Stellen auf dem Bildschirm bringt. – Jonathan

Verwandte Themen