From 5ba55d8a11ceea31dad6ec9304b657bb5e942e65 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Fri, 11 Oct 2019 18:43:18 -0400 Subject: math: vector: Add vec3 cross product procedures. --- chickadee/math/vector.scm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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))) -- cgit v1.2.3