(prog (my_height_feet my_height_meters) (load "glob.lsp") (defstruct physics_vector x y z) (write-line "Common lisp output") ; write to stdout (write-line "Chapter 2") ; write to stdout (write-line "Problem 5") ; write to stdout (defun add_vectors (a b) (make-physics_vector :x (+ (physics_vector-x a) (physics_vector-x b)) :y (+ (physics_vector-y a) (physics_vector-y b)) :z (+ (physics_vector-z a) (physics_vector-z b)))) (defun subtract_vectors (a b) (make-physics_vector :x (- (physics_vector-x a) (physics_vector-x b)) :y (- (physics_vector-y a) (physics_vector-y b)) :z (- (physics_vector-z a) (physics_vector-z b)))) (defun dot_vectors (a b) (+ (* (physics_vector-x a) (physics_vector-x b)) (* (physics_vector-y a) (physics_vector-y b)) (* (physics_vector-z a) (physics_vector-z b)))) (defun magnitude_vector (a) (sqrt (dot_vectors a a )) ) (defun cross_vectors (a b) (make-physics_vector :x (- (* (physics_vector-y a) (physics_vector-z b)) (* (physics_vector-z a) (physics_vector-y b))) :y (- (* (physics_vector-z a) (physics_vector-x b)) (* (physics_vector-x a) (physics_vector-z b))) :z (- (* (physics_vector-x a) (physics_vector-y b)) (* (physics_vector-y a) (physics_vector-x b)) ))) (write-line "Problem 501") ; write to stdout (setq a (make-physics_vector :x 4.0 :y -3.0 :z 0.0)) (write-line "Problem 502") ; write to stdout (write-line (format nil "a.x = ~F a.y = ~F a.z = ~F" (physics_vector-x a) (physics_vector-y a) (physics_vector-z a))) (write-line "Problem 503") ; write to stdout (setq b (make-physics_vector :x 6.0 :y 8.0 :z 0.0)) (write-line "Problem 504") ; write to stdout (write-line (format nil "b.x = ~F b.y = ~F b.z = ~F" (physics_vector-x b) (physics_vector-y b) (physics_vector-z b))) (write-line "Problem 505") ; write to stdout (setq c (add_vectors a b)) (setq d (subtract_vectors b a)) (setq e (subtract_vectors a b)) (setq f (make-physics_vector :x 2.0 :y -3.0 :z 7.0)) (setq g (make-physics_vector :x 12.0 :y 45.0 :z -8.0)) (setq h (make-physics_vector :x -5.0 :y -3.0 :z 42.0)) (setq mag_a (magnitude_vector a)) (setq mag_b (magnitude_vector b)) (setq mag_c (magnitude_vector c)) (setq mag_d (magnitude_vector d)) (setq mag_e (magnitude_vector e)) (setq mag_f (magnitude_vector f)) (setq mag_g (magnitude_vector g)) (setq mag_h (magnitude_vector h)) (write-line "Problem 506") ; write to stdout (write-line (format nil "c.x = ~F c.y = ~F c.z = ~F" (physics_vector-x c) (physics_vector-y c) (physics_vector-z c))) (write-line (format nil "d.x = ~F d.y = ~F d.z = ~F" (physics_vector-x d) (physics_vector-y d) (physics_vector-z d))) (write-line (format nil "e.x = ~F e.y = ~F e.z = ~F" (physics_vector-x e) (physics_vector-y e) (physics_vector-z e))) (write-line "Problem 502") ; write to stdout (write-line (format nil "f.x = ~F f.y = ~F f.z = ~F" (physics_vector-x f) (physics_vector-y f) (physics_vector-z f))) (write-line "Problem 502") ; write to stdout (write-line (format nil "g.x = ~F g.y = ~F g.z = ~F" (physics_vector-x g) (physics_vector-y g) (physics_vector-z g))) (write-line "Problem 502") ; write to stdout (write-line (format nil "h.x = ~F h.y = ~F h.z = ~F" (physics_vector-x h) (physics_vector-y h) (physics_vector-z h))) (write-line "Problem 507") ; write to stdout (write-line (format nil "magnitude of a = ~F" mag_a)) (write-line (format nil "magnitude of b = ~F" mag_b)) (write-line (format nil "magnitude of c = ~F" mag_c)) (write-line (format nil "magnitude of d = ~F" mag_d)) (write-line (format nil "magnitude of e = ~F" mag_e)) (write-line (format nil "magnitude of f = ~F" mag_f)) (write-line (format nil "magnitude of g = ~F" mag_g)) (write-line (format nil "magnitude of h = ~F" mag_h)) (write-line (format nil "a dot a = ~F" (dot_vectors a a))) (write-line (format nil "a dot b = ~F" (dot_vectors a b))) (write-line (format nil "b dot a = ~F" (dot_vectors b a))) (write-line (format nil "a dot c = ~F" (dot_vectors a c))) (write-line (format nil "d dot a = ~F" (dot_vectors d a))) (write-line (format nil "a dot e = ~F" (dot_vectors a e))) (write-line (format nil "e dot a = ~F" (dot_vectors e a))) (setq axa (cross_vectors a a)) (write-line (format nil "axa.x = ~F axa.y = ~F axa.z = ~F" (physics_vector-x axa) (physics_vector-y axa) (physics_vector-z axa))) (setq axb (cross_vectors a b)) (write-line (format nil "axb.x = ~F axb.y = ~F axb.z = ~F" (physics_vector-x axb) (physics_vector-y axb) (physics_vector-z axb))) (setq bxa (cross_vectors b a)) (write-line (format nil "bxa.x = ~F bxa.y = ~F bxa.z = ~F" (physics_vector-x bxa) (physics_vector-y bxa) (physics_vector-z bxa))) (setq axc (cross_vectors a c)) (write-line (format nil "axc.x = ~F axc.y = ~F axc.z = ~F" (physics_vector-x axc) (physics_vector-y axc) (physics_vector-z axc))) (setq dxa (cross_vectors d a)) (write-line (format nil "dxa.x = ~F dxa.y = ~F dxa.z = ~F" (physics_vector-x dxa) (physics_vector-y dxa) (physics_vector-z dxa))) (setq axe (cross_vectors a e)) (write-line (format nil "axe.x = ~F axe.y = ~F axe.z = ~F" (physics_vector-x axe) (physics_vector-y axe) (physics_vector-z axe))) (setq exa (cross_vectors e a)) (write-line (format nil "exa.x = ~F exa.y = ~F exa.z = ~F" (physics_vector-x exa) (physics_vector-y exa) (physics_vector-z exa))) (setq exa (cross_vectors e a)) (write-line (format nil "exa.x = ~F exa.y = ~F exa.z = ~F" (physics_vector-x exa) (physics_vector-y exa) (physics_vector-z exa))) (setq fxg (cross_vectors f g)) (write-line (format nil "fxg.x = ~F fxg.y = ~F fxg.z = ~F" (physics_vector-x fxg) (physics_vector-y fxg) (physics_vector-z fxg))) (setq fxh (cross_vectors f h)) (write-line (format nil "fxh.x = ~F fxh.y = ~F fxh.z = ~F" (physics_vector-x fxh) (physics_vector-y fxh) (physics_vector-z fxh))) (setq gxh (cross_vectors g h)) (write-line (format nil "gxh.x = ~F gxh.y = ~F gxh.z = ~F" (physics_vector-x gxh) (physics_vector-y gxh) (physics_vector-z gxh))) (setq gxf (cross_vectors g f)) (write-line (format nil "gxf.x = ~F gxf.y = ~F gxf.z = ~F" (physics_vector-x gxf) (physics_vector-y gxf) (physics_vector-z gxf))) (setq hxf (cross_vectors h f)) (write-line (format nil "hxf.x = ~F hxf.y = ~F hxf.z = ~F" (physics_vector-x hxf) (physics_vector-y hxf) (physics_vector-z hxf))) (setq hxg (cross_vectors h g)) (write-line (format nil "hxg.x = ~F hxg.y = ~F hxg.z = ~F" (physics_vector-x hxg) (physics_vector-y hxg) (physics_vector-z hxg))) )