;;draw-person posn number symbol(color) symbol(color) -> boolean boolean
;;
;;Consumes the position(posn) of the head of the guy, his body size and the color of his clothes to create him.
;;
;;Before using function, must call function "start" by the following rules...(start number1 number2) wherein number1 is equal to the
;;x maximum or width of the window in which the drawing will appear while number2 is the y maximum or the height of the window that
;;the drawing will appear in.
;;
;;Unfortunately, since for function "draw-circle" the size needs to be an integer, and my proportions require division by 16 at points, all size inputs
;;must be divisible by 16. Have fun!
;;
;;test (assuming start has been called) - (draw-person (make-posn 150 150) 50 'black 'black 'black) - > false (no drawing)
;;test (assuming start has been called) - (draw-person (make-posn 150 150) 64 'black 'black 'black) - > true true (creates drawing)
(define (draw-person pos size shirt-color pants-color shoes-color)
(and
;;Creates circle for head
(draw-circle pos (/ size 2) 'black)
;;Following lines create eye glasses for this person
(draw-circle (make-posn (- (posn-x pos) (/ size 4)) (- (posn-y pos) (/ size 4))) (/ size 8) 'black)
(draw-circle (make-posn (+ (posn-x pos) (/ size 4)) (- (posn-y pos) (/ size 4))) (/ size 8) 'black)
;;Creates 1st bar of glasses
(draw-solid-line
(make-posn (- (posn-x pos) (* size .375)) (- (posn-y pos) (/ size 4)))
(make-posn (- (posn-x pos) (/ size 2)) (- (posn-y pos) (/ size 4)))
'black)
;;Creates 2nd Bar of glasses
(draw-solid-line
(make-posn (+ (posn-x pos) (/ (* size 3) 8)) (- (posn-y pos) (/ size 4)))
(make-posn (+ (posn-x pos) (/ size 2)) (- (posn-y pos) (/ size 4)))
'black)
;;Creates bar connecting glasses
(draw-solid-line
(make-posn (- (posn-x pos) (/ size 8)) (- (posn-y pos) (/ size 4)))
(make-posn (+ (posn-x pos) (/ size 8)) (- (posn-y pos) (/ size 4)))
'black)
;;Creates pupils inside glasses
(draw-solid-disk (make-posn (- (posn-x pos) (/ size 4)) (- (posn-y pos) (/ size 4))) (/ size 16) 'black)
(draw-solid-disk (make-posn (+ (posn-x pos) (/ size 4)) (- (posn-y pos) (/ size 4))) (/ size 16) 'black)
;;Creates mouth
(draw-circle (make-posn (posn-x pos) (+ (posn-y pos) (/ size 4))) (/ size 8) 'pink)
;;Creates T-shirt
(draw-solid-rect (make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (/ size 2))) size (* size 2) shirt-color)
(draw-solid-rect (make-posn (- (posn-x pos) size) (+ (posn-y pos) (/ size 2))) (* size 2) (* size .75) shirt-color)
;;Creates hair
(draw-solid-rect (make-posn (- (posn-x pos) (/ size 4)) (- (posn-y pos) (/ size 2))) (/ size 2) (/ size 8) 'brown)
;;Creates pants
(draw-solid-rect (make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 2.5))) size (* size 2) pants-color)
;;Creates shoes
(draw-solid-rect (make-posn (- (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 4.5))) (* size 1.5) (/ size 2) shoes-color)
;;Creates right arm
(draw-solid-line
(make-posn (- (posn-x pos) size) (+ (posn-y pos) (* size .75)))
(make-posn (- (posn-x pos) (* size 1.5)) (+ (posn-y pos) (* size .75)))
'black)
(draw-solid-line
(make-posn (- (posn-x pos) size) (+ (posn-y pos) size))
(make-posn (- (posn-x pos) (* size 1.5)) (+ (posn-y pos) size))
'black)
;;Creates left arm
(draw-solid-line
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) (* size .75)))
(make-posn (+ (posn-x pos) (* size 1.5)) (+ (posn-y pos) (* size .75)))
'black)
(draw-solid-line
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) size))
(make-posn (+ (posn-x pos) (* size 1.5)) (+ (posn-y pos) size))
'black)
;;Creates hands (hands are circles to save time)
;;X shift discovered by doing a^2+b^2=c^2 wherein a=.125 and c=.25, then value was added to 1.5
(draw-circle (make-posn (- (posn-x pos) (* size 1.7165)) (+ (posn-y pos) (* size .875))) (/ size 4) 'black)
(draw-circle (make-posn (+ (posn-x pos) (* size 1.7165)) (+ (posn-y pos) (* size .875))) (/ size 4) 'black)
;;Outlines shirt
(draw-solid-line
(make-posn (- (posn-x pos) size) (+ (posn-y pos) (/ size 2)))
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) (/ size 2)))
'black)
(draw-solid-line
(make-posn (- (posn-x pos) size) (+ (posn-y pos) (/ size 2)))
(make-posn (- (posn-x pos) size) (+ (posn-y pos) (* size 1.25)))
'black)
(draw-solid-line
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) (/ size 2)))
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) (* size 1.25)))
'black)
(draw-solid-line
(make-posn (- (posn-x pos) size) (+ (posn-y pos) (* size 1.25)))
(make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 1.25)))
'black)
(draw-solid-line
(make-posn (+ (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 1.25)))
(make-posn (+ (posn-x pos) size) (+ (posn-y pos) (* size 1.25)))
'black)
;;Outlines left side of pants and shirt
(draw-solid-line
(make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 1.25)))
(make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 4.5)))
'black)
;;Outlines right side of pants and shirt
(draw-solid-line
(make-posn (+ (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 1.25)))
(make-posn (+ (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 4.5)))
'black)
;;Signifies "belt"
(draw-solid-line
(make-posn (- (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 2.5)))
(make-posn (+ (posn-x pos) (/ size 2)) (+ (posn-y pos) (* size 2.5)))
'black)
;;line down middle of pants and seperating shoes
(draw-solid-line
(make-posn (posn-x pos) (+ (posn-y pos) (* size 3)))
(make-posn (posn-x pos) (+ (posn-y pos) (* size 5)))
'black)
;;outline of shoes
(draw-solid-line
(make-posn (- (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 4.5)))
(make-posn (+ (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 4.5)))
'black)
(draw-solid-line
(make-posn (- (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 4.5)))
(make-posn (- (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 5)))
'black)
(draw-solid-line
(make-posn (+ (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 4.5)))
(make-posn (+ (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 5)))
'black)
(draw-solid-line
(make-posn (- (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 5)))
(make-posn (+ (posn-x pos) (* size .75)) (+ (posn-y pos) (* size 5)))
'black)))
;(start 300 600)
;(draw-person (make-posn 150 150) 32 'blue 'red 'gray)