;; The first three lines of this file were inserted by DrScheme. They record metadata
;; about the language level of this file in a form that our tools can easily process.
#reader(lib "htdp-beginner-reader.ss" "lang")((modname 20.4.3) (read-case-sensitive #t) (teachpacks ()) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ())))
; Worked exercise 20.4.3

; distance-to-top-left : posn -> number

(check-within (distance-to-top-left (make-posn 0 0)) 0 .1)
(check-within (distance-to-top-left (make-posn 6 0)) 6 .1)
(check-within (distance-to-top-left (make-posn 0 4.3)) 4.3 .1)
(check-within (distance-to-top-left (make-posn 3 4)) 5 .1)
; 3^2 + 4^2 = 9 + 16 = 25 = 5^2
(check-within (distance-to-top-left (make-posn 4 7)) 8.1 .1)
; 4^2 + 7^2 = 16 + 49 = 65 > 8^2

(define (distance-to-top-left the-point)
  ; the-point               a posn
  ; (posn-x the-point)      a number (x)
  ; (posn-y the-point)      a number (y)
  ; (* (posn-x the-point) (posn-x the-point)) a number (x^2)
  ; (* (posn-y the-point) (posn-y the-point)) a number (y^2)
  ; (+ (* (posn-x the-point) (posn-x the-point))
  ;    (* (posn-y the-point) (posn-y the-point)))
  ;   a number (x^2 + y^2)
  (sqrt (+ (* (posn-x the-point) (posn-x the-point))
           (* (posn-y the-point) (posn-y the-point))))
  )