summaryrefslogtreecommitdiff
path: root/shared/pict.rkt
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2023-03-19 10:24:56 +0100
committerMike Vink <mike1994vink@gmail.com>2023-03-19 10:24:56 +0100
commitdc322c0c524ae959e623636d68716c91d5a09404 (patch)
tree6419d49fef6de67ddd90e111aa0e97dd73847d7b /shared/pict.rkt
parent53bdf776c4f426a92953d2afa76c1f9ee008c02c (diff)
fixup
Diffstat (limited to 'shared/pict.rkt')
-rw-r--r--shared/pict.rkt61
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))