diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-03-19 10:24:56 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-03-19 10:24:56 +0100 |
| commit | dc322c0c524ae959e623636d68716c91d5a09404 (patch) | |
| tree | 6419d49fef6de67ddd90e111aa0e97dd73847d7b /shared/pict.rkt | |
| parent | 53bdf776c4f426a92953d2afa76c1f9ee008c02c (diff) | |
fixup
Diffstat (limited to 'shared/pict.rkt')
| -rw-r--r-- | shared/pict.rkt | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/shared/pict.rkt b/shared/pict.rkt new file mode 100644 index 0000000..7c7a74e --- /dev/null +++ b/shared/pict.rkt @@ -0,0 +1,61 @@ +#lang racket +(provide + make-vect + xcor-vect + ycor-vect + add-vect + sub-vect + scale-vect + test-vect + make-frame + origin-frame + edge1-frame + edge2-frame + test-frame + make-segment + start-segment + end-segment) +(require sicp-pict) +(require "lists.rkt") + +(define (make-vect x y) + (cons x y)) +(define (xcor-vect v) + (car v)) +(define (ycor-vect v) + (cdr v)) + +(define (add-vect . v) + (make-vect + (fold-right + 0 (map xcor-vect v)) + (fold-right + 0 (map ycor-vect v)))) +(define (sub-vect . v) + (let ((xcors (map xcor-vect v)) + (ycors (map ycor-vect v))) + (make-vect + (- (car xcors) (fold-right + 0 (cdr xcors))) + (- (car ycors) (fold-right + 0 (cdr ycors)))))) +(define (scale-vect s v) + (make-vect (* s (xcor-vect v)) + (* s (ycor-vect v)))) +(define test-vect (make-vect 1 2)) + +(define (make-frame origin edge1 edge2) + (list origin edge1 edge2)) +(define (origin-frame frame) + (car frame)) +(define (edge1-frame frame) + (cadr frame)) +(define (edge2-frame frame) + (caddr frame)) +(define test-frame (make-frame + (make-vect 1 2) + (make-vect 2 4) + (make-vect 3 6))) + +(define (make-segment start end) + (cons start end)) +(define (start-segment s) + (car s)) +(define (end-segment s) + (cdr s)) |
