49 lines
1.8 KiB
Scheme
Executable file
49 lines
1.8 KiB
Scheme
Executable file
#!/usr/bin/scheme -q
|
|
|
|
(define (get-random-nodes start stop)
|
|
(let [(x (- (random 10.0) 5)) (y (- (random 5.0) 2.5))]
|
|
(cond
|
|
((= start stop) '())
|
|
((< (sqrt (+ (* x x) (* y y))) 1.5) (get-random-nodes start stop))
|
|
(#t (cons (list start x y) (get-random-nodes (+ start 1) stop))))))
|
|
|
|
(define (print-node node type)
|
|
(let [(id (car node)) (x (cadr node)) (y (caddr node))]
|
|
(format #t "\\node (~a) at (~a, ~a) {\\~a};~%" id x y type)))
|
|
|
|
(define (print-nodes nodes type)
|
|
(map (lambda (node) (print-node node type)) nodes))
|
|
|
|
(define (select-nodes nodes start stop)
|
|
(filter (lambda (node) (and (>= (car node) start) (< (car node) stop))) nodes))
|
|
|
|
(define-syntax only
|
|
(syntax-rules ()
|
|
[(_ count body ...)
|
|
(begin
|
|
(format #t "\\only<~a> {~%" count)
|
|
body ...
|
|
(format #t "}~%"))]))
|
|
|
|
(let*
|
|
[(starting-nodes (get-random-nodes 0 100))
|
|
(still-healthy (select-nodes starting-nodes 0 80))
|
|
(broken (select-nodes starting-nodes 80 100))
|
|
(new (get-random-nodes 100 120))]
|
|
|
|
(format #t "\\clip (-5.5, 3) rectangle (5.5, -3.5);")
|
|
(format #t "\\node (origin) at (0, 0) {\\compmailr};~%")
|
|
|
|
(print-nodes still-healthy "compmailr")
|
|
(print-nodes broken "compbrok")
|
|
(print-nodes new "compnew")
|
|
(map (lambda (node) (format #t "\\draw[->, black!60!green] (origin.center) edge (~a.center);~%" (car node))) starting-nodes)
|
|
(print-nodes still-healthy "compmailr")
|
|
(print-nodes broken "compbrok")
|
|
(print-nodes new "compnew")
|
|
|
|
(format #t "\\node (fail1) at (-2.9, -3.3) {\\includegraphics[scale=0.3]{img/fail.png} BANDWIDTH};")
|
|
(format #t "\\node (fail2) at (0, -3.3) {\\includegraphics[scale=0.3]{img/fail.png} COVERAGE};")
|
|
(format #t "\\node (fail3) at (2.4, -3.3) {\\includegraphics[scale=0.3]{img/fail.png} DELAY};"))
|
|
(format #t "\\node (origin) at (0, 0) {\\compmailr};~%")
|
|
(exit)
|