Ausgabe

Projektnavigation: Einleitung Pool cross over Mutation Bewertung Selektion Ausgabe Steuerung

bild der grafischen ausgabe

Ausgabe

von Mathias Mäser und Raymond Schreiber

Beschreibung

Die grafische Ausgabe bekommt eine Liste von Koordinaten übergeben und stellt diese dar.
Hierbei werden die Punkte als weiße Vierecke und die Strecken zwischen diesen als rote Geraden dargestellt.
Beim zeichnen ist zu beachten, dass oben Links (0|0) ist und von dort aus gezeichnet wird.

Alle übergebenden Koordinaten werden mit 5 mulitpliziert, um die Ausgabe auf eine akzeptable Größe zu bekommen.

Benötigt

graphics.ss, eine Liste von Koordinaten

Funktionsweise

Der Funktion wird eine Liste von Wegpunkten ((x1 . y1) (x2 . y2)) übergeben.
Wir intitalisieren eine neue Leinwand und lassen dann rekursiv die Liste von Koordinaten auf dieser zeichnen.

Hierbei zeichnen bzw löschen wir mittels "clear-rectangle" an der Stelle der Koordinate ein Viereck auf der Leinwand.
Anschließend lassen wir eine Linie ("draw-line") zwischen dem vorherigen und dem aktuellen Punkt zeichnen.
Im letzten Schritt ruft die Funktion sich selbst auf mit der Restliste von Wegen.

Quellcode
(defin
  (gib_grafik loesungsgraph)
  ((draw-viewport Leinwand) (make-rgb 0 0 0)) ;macht die Hintergrundfarbe schwarz
  (let
      g-g
    ((wege loesungsgraph))
    (cond
      ((null? (cdr wege)) #f) ;gibt false aus, falls die folge- Koordinate fehlt.
      (else
       ((draw-string Leinwand) (make-posn 20 470) (number->string (bewerte loesungsgraph) 10) (make-rgb 1 1 1)
       	;berechnet die laenge des loesungsgraphen und zeigt die laenge im ausgabefenster an
       ((clear-rectangle Leinwand) ; zeichnet/löscht ein Rechteck um den Startpunkt von erste- Koordinate
        (make-posn (- (* (car (car wege)) 5) '3)  (- (* (cdr (car wege)) 5) '3))
        6 6)
       ((draw-line Leinwand) ;erstellt eine Gerade zwischen zwei Koordinaten
        (make-posn (* (car (car wege)) 5) (* (cdr (car wege)) 5)) ;erstellt erste- Koordinate (x1|y1)
        (make-posn (* (car (cadr wege)) 5) (* (cdr (cadr wege)) 5)) ;erstellt folge- Koordinate (x2|y2)
        (make-rgb 1 0 0))
       (g-g (cdr wege))))))