29 lines
675 B
Scheme
29 lines
675 B
Scheme
(define (make-point x y) (cons x y))
|
|
|
|
(define (x-point p) (car p))
|
|
(define (y-point p) (cdr p))
|
|
|
|
(define (make-segment start end) (cons start end))
|
|
(define (start-segment s) (car s))
|
|
(define (end-segment s) (cdr s))
|
|
|
|
(define (mid-point s)
|
|
(let ((start-x (x-point (start-segment s)))
|
|
(start-y (y-point (start-segment s)))
|
|
(end-x (x-point (end-segment s)))
|
|
(end-y (y-point (end-segment s))))
|
|
(make-point
|
|
(average start-x end-x)
|
|
(average start-y end-y))))
|
|
|
|
(define (print-point p)
|
|
(display "(")
|
|
(display (x-point p))
|
|
(display ",")
|
|
(display (y-point p))
|
|
(display ")")
|
|
(newline))
|
|
|
|
(define (average x y)
|
|
(/ (+ x y) 2.0))
|