You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- (import "oo.slime")
-
- (define-class vector3 (x y z)
- (define (get-x) x)
- (define (get-y) y)
- (define (get-z) z)
-
- (define (set-x new-x) (mutate x new-x))
- (define (set-y new-y) (mutate y new-y))
- (define (set-z new-z) (mutate z new-z))
-
- (define (length)
- (** (+ (* x x) (* y y) (* z z)) 0.5))
-
- (define (scale fac)
- (mutate x (* fac x))
- (mutate y (* fac y))
- (mutate z (* fac z))
- fac)
-
- (define (add other)
- (make-vector3
- (+ x (other get-x))
- (+ y (other get-y))
- (+ z (other get-z))))
-
- (define (subtract other)
- (make-vector3
- (- x (other get-x))
- (- y (other get-y))
- (- z (other get-z))))
-
- (define (scalar-product other)
- (+ (* x (other get-x))
- (* y (other get-y))
- (* z (other get-z))))
-
- (define (cross-product other)
- (make-vector3
- (- (* y (other get-z)) (* z (other get-y)))
- (- (* z (other get-x)) (* x (other get-z)))
- (- (* x (other get-y)) (* y (other get-x)))))
-
- (define (print)
- (printf :sep "" "[vector3] (" x y z ")"))
- )
-
- (define v1 (make-vector3 1 2 3))
- (define v2 (make-vector3 3 2 1))
-
- (assert (= (type v1) (type v2) :vector3))
- (assert (= (v1 scalar-product v2) 10))
|