Progamm
Seitenanfang
Seitenende
;;; <tsp mit GA Grafik.scm>
; Grafikprogramm für die Darstellung des Weges beim tsp - Problem.
; Die Prozedur bekommt eine Liste von Punkten übergeben, die Punkte
; sind zweielementige Listen von Zahlen.
; Als zweiten Parameter bekommt die Prozedur einen boolean - Wert
; übergeben, der einerseits festlegt, ob die Grafik auf eine Taste
; warten soll oder nicht und andrerseits dann die Grafikdarstellung
; beendet.
(require-library "graphics.ss" "graphics")
(open-graphics)
(define Grafik
(open-viewport "tsp mit GA Grafik" Bild-Groesse Bild-Groesse))
;;; ===== zeichne ======================================================
(define
(zeichne Individuum warten?)
((draw-viewport Grafik) (make-rgb 1 1 1))
(let
loop
((Liste (car Individuum)))
(cond
((null? (cdr Liste))
((draw-lineGrafik
(make-posn (caar Liste) (cadar Liste))
(make-posn (caaar Individuum)(cadaar Individuum))
(make-rgb 0 0 0))
((draw-stringGrafik
(make-posn 10 10)
(number->string (round (cadr Individuum)))
(make-rgb 0 0 1))
(if
warten?
(begin
(display "Taste zum Abbruch !")
(warte)
(close-graphics)))
(void))
(else
((draw-line Grafik
(make-posn (caar Liste) (cadar Liste))
(make-posn (caadr Liste)(cadadr Liste))
(make-rgb 0 0 0))
((draw-rectangle Grafik
(make-posn
(sub1 (caar Liste))
(sub1 (cadar Liste)))
3 3 (make-rgb 1 0 0))
(loop (cdr Liste))))))
;;; ===== warte ====================================================================
(define
(warte)
(viewport-flush-input Grafik
(get-key-press Grafik