(define (degrees->radians deg)
(* deg (/ pi 180)))
(define makeVec cons)
(define getX car)
(define getY cdr)
;orig is the origin of the vector
;rotate-orig is the origin around which the rotation should happen
;alpha should be converted to radians first, because degrees are so much better but radians are expected
;returns the new position of the vector after rotation
(define (rotateVec alpha orig rotate-orig)
(let ((old-x (getX orig))
(old-y (getY orig))
(rotate-x (getX rotate-orig))
(rotate-y (getY rotate-orig))
(radians (degrees->radians alpha)))
(makeVec (+ (- (* (- old-x rotate-x) (cos radians))
(* (- old-y rotate-y) (sin radians)))
rotate-x)
(+ (+ (* (- old-x rotate-x) (sin radians))
(* (- old-y rotate-y) (cos radians)))
rotate-y))))
(define (make-rectangle x y width height angle rotate-x rotate-y colour)
(let* ((pos1 (makeVec x y))
(pos2 (makeVec (+ x width) y))
(pos3 (makeVec x (+ y height)))
(pos4 (makeVec (+ x width) (+ y height)))
(rotateOrig (makeVec rotate-x rotate-y))
(pos1-rotated (rotateVec angle pos1 rotateOrig))
(pos2-rotated (rotateVec angle pos2 rotateOrig))
(pos3-rotated (rotateVec angle pos3 rotateOrig))
(pos4-rotated (rotateVec angle pos4 rotateOrig)))
;
; (draw-line! (getX pos1) (getY pos1) (getX pos2) (getY pos2) colour)
; (draw-line! (getX pos1) (getY pos1) (getX pos3) (getY pos3) colour)
; (draw-line! (getX pos2) (getY pos2) (getX pos4) (getY pos4) colour)
; (draw-line! (getX pos3) (getY pos3) (getX pos4) (getY pos4) colour)
;
; (draw-line! (getX pos1-rotated) (getY pos1-rotated) (getX pos2-rotated) (getY pos2-rotated) colour)
; (draw-line! (getX pos1-rotated) (getY pos1-rotated) (getX pos3-rotated) (getY pos3-rotated) colour)
; (draw-line! (getX pos2-rotated) (getY pos2-rotated) (getX pos4-rotated) (getY pos4-rotated) colour)
; (draw-line! (getX pos3-rotated) (getY pos3-rotated) (getX pos4-rotated) (getY pos4-rotated) colour)
((draw-solid-polygon MainWindow)
(list (my-make-posn (getX pos3-rotated)
(- Pixels-y (getY pos3-rotated)))
(my-make-posn (getX pos4-rotated)
(- Pixels-y (getY pos4-rotated)))
(my-make-posn (getX pos2-rotated)
(- Pixels-y (getY pos2-rotated)))
(my-make-posn (getX pos1-rotated)
(- Pixels-y (getY pos1-rotated))))
(my-make-posn 0 0)
(12bitColor2rgb (make-color 15 0 0)))))