Test pub_0

#lang racket
(require "hw2.rkt")
 (define recur-prg '( (define STYLE "fill:pink;opacity:0.5;stroke:black;stroke-width:2") (define END 15) (define (recur-circ x y r) (circle x y r STYLE) (when (> r END) (recur-circ (+ x r) y (floor (/ r 2))) (recur-circ (- x r) y (floor (/ r 2))) (recur-circ x (+ y r) (floor (/ r 2))) (recur-circ x (- y r) (floor (/ r 2))) ) ) )) (display (execute 400 400 recur-prg '(recur-circ 200 200 100)))

Test pub_1

#lang racket
(require "hw2.rkt")
 (display (execute 400 400 '() '(line 10 20 30 40 "stroke:black;stroke-width:5")))

Test pub_2

#lang racket
(require "hw2.rkt")
 (display (execute 10 20 '() '(circle 5 (floor (* 5 (sin (/ 3.14 3)))) 5 "stroke:red")))

Test pub_3

#lang racket
(require "hw2.rkt")
 (define prg '( (define STYLE "fill:red;opacity:0.2;stroke:red;stroke-width:3") (define START 195) (define END 10) (define (circles x r) (when (> r END) (circle x 200 r STYLE) (circles (+ x (floor (/ r 2))) (floor (/ r 2))) ) ) )) (display (execute 400 400 prg '(circles 200 START)))

Test pub_4

#lang racket
(require "hw2.rkt")
 (define test1 '((define (start) (rect 0 0 100 100 "fill:red") (rect 100 0 100 100 "fill:green") (rect 200 0 100 100 "fill:blue")))) (display (execute 400 400 test1 '(start)))

Test pub_5

#lang racket
(require "hw2.rkt")
 (define tree-prg '( (define STYLE1 "stroke:black;stroke-width:2;opacity:0.9") (define STYLE2 "stroke:green;stroke-width:3;opacity:0.9") (define FACTOR 0.7) (define PI 3.14) (define (draw x1 y1 x2 y2 len angle) (if (> len 30) (line x1 y1 x2 y2 STYLE1) (line x1 y1 x2 y2 STYLE2) ) (when (> len 20) (recur-tree x2 y2 (floor (* len FACTOR)) angle) (recur-tree x2 y2 (floor (* len FACTOR)) (+ angle 0.3)) (recur-tree x2 y2 (floor (* len FACTOR)) (- angle 0.6)) ) ) (define (recur-tree x1 y1 len angle) (draw x1 y1 (+ x1 (* len (cos angle))) (+ y1 (* len (sin angle))) len angle) ) )) (display (execute 400 300 tree-prg '(recur-tree 200 300 100 (* PI 1.5))))

Test pri_1

#lang racket
(require "hw2.rkt")
 (display (execute 10 20 '() '(circle 5 (* 2 3) 5 "stroke:red")))

Test pri_2

#lang racket
(require "hw2.rkt")
 (display (execute 10 20 '() '(circle 5 (floor (* 5 (sin (/ 3.14 3)))) 5 "stroke:red")))

Test pri_3

#lang racket
(require "hw2.rkt")
 (define prg '( (define RED "stroke:red") (define GREEN "stroke:green") (define (start x y) (if (< x y) (line 0 0 100 100 RED) (line 0 0 100 100 GREEN) ) ) )) (display (execute 200 200 prg '(start 0 1)))

Test pri_4

#lang racket
(require "hw2.rkt")
 (define prg '( (define RED "stroke:red") (define GREEN "stroke:green") (define (start x y) (if (< x y) (line 0 0 100 100 RED) (line 0 0 100 100 GREEN) ) ) )) (display (execute 200 200 prg '(start 1 0)))

Test pri_5

#lang racket
(require "hw2.rkt")
 (define prg '( (define RED "stroke:red") (define END 100) (define (start x y) (when (< x y) (line 0 0 END END RED) ) ) )) (display (execute 200 200 prg '(start 0 1)))

Test pri_6

#lang racket
(require "hw2.rkt")
 (define prg '( (define RED "stroke:red") (define END 100) (define (start x y) (when (< x y) (line 0 0 END END RED) ) ) )) (display (execute 200 200 prg '(start 1 0)))

Test pri_7

#lang racket
(require "hw2.rkt")
 (display (execute 100 200 '() '(line (+ 1 2 3 4) (* 1 2 3 4) (floor (cos 0)) (floor (sin 0)) "stroke:black")))

Test pri_8

#lang racket
(require "hw2.rkt")
 (define prg '( (define STYLE "stroke:black") (define (start n) (when (< n 2) (rect 0 (* n 10) 10 20 STYLE) ) (when (> n 0) (start (- n 1)) ) ) )) (display (execute 200 200 prg '(start 10)))

Test pri_9

#lang racket
(require "hw2.rkt")
 (define prg '( (define STYLE "stroke:black") (define (start n) (when (< n 2) (rect 0 (* n 10) 10 20 STYLE) ) (when (> n 0) (start (- n 1)) ) ) )) (display (execute 200 200 prg '(start 10)))

Test pri_10

#lang racket
(require "hw2.rkt")
 (define prg '( (define BLUE "stroke:blue") (define GREEN "stroke:green") (define END 40) (define (start x d) (when (< x END) (if (> d 0) (line x 0 (+ x 10) 10 BLUE) (line x 10 (+ x 10) 0 GREEN) ) (start (+ x 10) (* d -1)) ) ) )) (display (execute 200 200 prg '(start 0 1)))

Test pri_11

#lang racket
(require "hw2.rkt")
 (define prg '( (define BLUE "stroke:blue") (define GREEN "stroke:green") (define END 40) (define (start x d) (when (< x END) (if (> d 0) (line x 0 (+ x 10) 10 BLUE) (line x 10 (+ x 10) 0 GREEN) ) (start (+ x 10) (* d -1)) ) ) )) (display (execute 200 200 prg '(start 0 1)))

Test pri_12

#lang racket
(require "hw2.rkt")
 (define prg '( (define PI2 6.28) (define (start n) (circle-points PI2 (/ PI2 n)) ) (define (circle-points angle step) (when (> angle 0) (circle (floor (+ 100 (* 90 (cos angle)))) (floor (+ 100 (* 90 (sin angle)))) 5 "fill:blue") (circle-points (- angle step) step) ) ) )) (display (execute 200 200 prg '(start 2)))

Test pri_13

#lang racket
(require "hw2.rkt")
 (define prg '( (define PI2 6.28) (define (start n) (circle-points PI2 (/ PI2 n)) ) (define (circle-points angle step) (when (> angle 0) (circle (floor (+ 100 (* 90 (cos angle)))) (floor (+ 100 (* 90 (sin angle)))) 5 "fill:blue") (circle-points (- angle step) step) ) ) )) (display (execute 200 200 prg '(start 2)))

Test pri_14

#lang racket
(require "hw2.rkt")
 (define prg '( (define SIZE 100) (define (start) (next) ) (define (next) (next2) ) (define (next2) (circle 100 100 SIZE "stroke:red") ) )) (display (execute 200 200 prg '(start)))

Test pri_15

#lang racket
(require "hw2.rkt")
 (define prg '( (define SIZE 100) (define (start) (next) ) (define (next) (next2) ) (define (next2) (circle 100 100 SIZE "stroke:red") ) )) (display (execute 200 200 prg '(start)))

Test custom_1

#lang racket
(require "hw2.rkt")
 (define sierpinski-prg '( (define STYLE "stroke:black;stroke-width:3;") (define MAX-ITER 9) (define (triangle x1 y1 x2 y2 x3 y3 style) (line x1 y1 x2 y2 style) (line x2 y2 x3 y3 style) (line x3 y3 x1 y1 style) ) (define (sierpinski x1 y1 x2 y2 x3 y3 iter) (when (< iter MAX-ITER) (triangle x1 y1 x2 y2 x3 y3 STYLE) (sierpinski x2 y2 (/ (+ x2 x3) 2) (/ (+ y2 y3) 2) (/ (+ x1 x2) 2) (/ (+ y1 y2) 2) (+ iter 1)) (sierpinski (/ (+ x2 x3) 2) (/ (+ y2 y3) 2) x3 y3 (/ (+ x1 x3) 2) (/ (+ y1 y3) 2) (+ iter 1)) (sierpinski (/ (+ x1 x2) 2) (/ (+ y1 y2) 2) (/ (+ x1 x3) 2) (/ (+ y1 y3) 2) x1 y1 (+ iter 1)) ) ) )) (display (execute 400 400 sierpinski-prg '(sierpinski 200 0 0 400 400 400 0)))