Ein Rechteck soll an einer Seite gespiegelt werden.

SUP3RL3ON

Mitglied
Hallo Leute.

Ich möchte ein Rechteck an einer Seite Spiegeln.

Mein Aktueller Quellcode schaut so aus:
Java:
import java.awt.*;

class rechteck extends Frame
{
  rechteck(String t)
  {
    super(t);
  }
  public static void main(String[] args)
  {
    rechteck wnd = new rechteck ("Rechteck");

    wnd.setSize(400,700);
    wnd.setVisible(true);
  }
  
  public void paint(Graphics g)
  {

  g.drawRect(60,60,80,120);
  g.drawRect(60,60,160,120);
  g.drawRect(60,60,240,120);
  }
}

Ich hab da nun 3 Rechtecke. Das erste Rechteck soll am Ende bis zur Position des dritten gespiegelt sein.


Ich dachte mir das könnte man vielleicht mit einer while schleife umsetzen doch bis jetzt hatte ich kein Erfolg.


Kann mir jemand hier helfen?

Liebe Grüße Leon
 
Hallo Leon,

du möchtest ein Rechteck spiegeln an einem Punkt oder an einer Geraden ?
Es ist nur ein einfaches Mathematische Problem in dem du die Abstände zu dem Punkt oder zur Geraden berechnest.

Das erste Rechteck soll am Ende ...

Was bedeuted bei dir am Ende. Ist das Ende x + height oder y + width ?

Und wofür eine While Schleife ?
Willst du die Spiegelung animieren?

Sobald das geklärt ist kann man die gerne einen Lösungsvorschlag posten 😉
 
Naja ich würde sagen das sich das Rechteck nach rechts spiegelt.

Ehm ich glaube das Ende ist dann in der X Achse...?
Ja also es sollte eine kleine Animation sein.
 
Ok,

hast du dir schon Gedanken dazu gemacht ? Irgendwelche Ideen, wie man es umsetzen könnte? Eine Idee wie du es ohne Java mach würdest ? Also ich kann die jetzt alles vorgaukeln, aber wo bleibt dann die Herausforderung 😉

So als Tip:

Mal ein Rechteck auf. Bsp: (0,0,200,100)
Spiegeln an der X Achse.
Das bedeutet dass du nun die 100 immer -1 rechnest und dein rechteck neu zeichnist. Bis zu -100. Dabei musst du aber die 0,0 als neuen Startpunkt setzen, quasi translation. Schau mal nach der Funktion translate in der API.

Wenn du also die Achse verschoben hast beispielsweise auf 200,200 und dein rechteck zeichnist dann hast du es mit den positionen (0,0,200,100) vom window aber (200,200,200,100).

Nun das oben beschriebene szenario. Man kann jetzt noch Abstände mit einbauen usw. Ich hoffe ich habe es einigermaßen plausible erklären können 😉 Das Rechteck wird als in der höhe immer kleiner und dann zu 0 und dann wieder größer.

repaint is da auch dein Freund 😉
 
Naja wie gesagt ich hätte vielleicht gedacht das man mit ner Schleife den einen Wert immer ändert oder so ?

Also das ganze sollte schon in Java sein.

Wenn ich noch Laune habe werde ich mir das mit dem translation nachher angucken.

Aber ansonsten ist der Tipp sehr hilfreich glaub ich 😀
Aber ich würde das wie gesagt in ner Schleife machen oder? Das er immer minus oder plus 1 rechnet?
 
Genau, dass habe ich ja auch beschrieben.

Java:
Rectangle r = new Rectangle(0,0,200,100) // linie y + height wird nach y positiv weiter gezeichnet

for(i = 0; i < r.getHeight() * 2; i++) {
   // die höhe immer - 1 rechnen
   // altes rechteck löschen
   // neues rechteck zeichnen
   // repainten

   vielleicht noch Thread.sleep .... damit das nicht so schnell läuft!
}

Am ende ist das rechteck denn:
r = Rectangle(0,0, 200 , -100) // an der x achse gespiegelt ; linie y+height wird nach y negativ weiter gezeichnet

grüße spin und viel spass 🙂
 

Zurück
Oben