diff options
-rw-r--r-- | chickadee/math/vector.scm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/chickadee/math/vector.scm b/chickadee/math/vector.scm index 41c7659..31aff07 100644 --- a/chickadee/math/vector.scm +++ b/chickadee/math/vector.scm @@ -53,6 +53,8 @@ vec3-z vec3-magnitude vec3-dot-product + vec3-cross + vec3-cross! vec3-normalize set-vec3-x! set-vec3-y! @@ -229,6 +231,20 @@ polar coordinate (R, THETA)." (* (vec3-y v1) (vec3-y v2)) (* (vec3-z v1) (vec3-z v2)))) +(define-inlinable (vec3-cross! dest v1 v2) + (set-vec3! dest + (- (* (vec3-y v1) (vec3-z v2)) + (* (vec3-z v1) (vec3-y v2))) + (- (* (vec3-z v1) (vec3-x v2)) + (* (vec3-x v1) (vec3-z v2))) + (- (* (vec3-x v1) (vec3-y v2)) + (* (vec3-y v1) (vec3-x v2))))) + +(define-inlinable (vec3-cross v1 v2) + (let ((vout (vec3 0.0 0.0 0.0))) + (vec3-cross! vout v1 v2) + vout)) + (define-inlinable (vec2-normalize! v) "Normalize the vec2 V in-place." (unless (and (zero? (vec2-x v)) (zero? (vec2-y v))) |