luv

Workshop wiki

vec3.lisp

arithmetic/lisp/vec3.lisp

system luv/arithmetic · 16 definitions · on GitHub

A transparent three-component Lisp value and its arithmetic realization. Semantic owners name what a value means; packed colours and GPU vertex lanes remain dense vectors instead.

in-package#:luv.arithmetic.lisp.vec3
declaim
inline%make-vec3
defstruct
vec3
:constructor%make-vec3
xyz

A transparent CPU spatial triple, deliberately separate from its meaning. See #7K8UBF.

x0:typereal
y0:typereal
z0:typereal
declaim
inlinemake-vec3
defunmake-vec3
xyz
check-typexreal
check-typeyreal
check-typezreal
%make-vec3xyz
defunvec3-component
vectoraxis

Return vector's component on the closed geometric axis vocabulary.

check-typevectorvec3
ecaseaxis
:x
vec3-xvector
:y
vec3-yvector
:z
vec3-zvector
defun
valuevectoraxis
check-typevaluereal
check-typevectorvec3
ecaseaxis
:x
setf
vec3-xvector
value
:y
setf
vec3-yvector
value
:z
setf
vec3-zvector
value
defunvec3-scale
vectorscale
check-typevectorvec3
check-typescalereal
make-vec3
*
vec3-xvector
scale
*
vec3-yvector
scale
*
vec3-zvector
scale
defunvec3-dot
leftright
check-typeleftvec3
check-typerightvec3
+
*
vec3-xleft
vec3-xright
*
vec3-yleft
vec3-yright
*
vec3-zleft
vec3-zright
defunvec3-cross
leftright
check-typeleftvec3
check-typerightvec3
make-vec3
-
*
vec3-yleft
vec3-zright
*
vec3-zleft
vec3-yright
-
*
vec3-zleft
vec3-xright
*
vec3-xleft
vec3-zright
-
*
vec3-xleft
vec3-yright
*
vec3-yleft
vec3-xright
defunvec3-length
vector
check-typevectorvec3
sqrt
vec3-dotvectorvector
defunvec3-normalize
vector
check-typevectorvec3
let
if
plusplength
vector
defunvec3-list
vector

Return vector's three components as portable external data.

check-typevectorvec3
list
vec3-xvector
vec3-yvector
vec3-zvector
defunmap-vec3-binary
functionleftright
make-vec3
funcallfunction
vec3-xleft
vec3-xright
funcallfunction
vec3-yleft
vec3-yright
funcallfunction
vec3-zleft
vec3-zright
defmethodlisp:lisp-binary-operation
function
leftvec3
rightnumber
make-vec3
funcallfunction
vec3-xleft
right
funcallfunction
vec3-yleft
right
funcallfunction
vec3-zleft
right
defmethodlisp:lisp-binary-operation
function
leftnumber
rightvec3
make-vec3
funcallfunctionleft
vec3-xright
funcallfunctionleft
vec3-yright
funcallfunctionleft
vec3-zright
defmethodlisp:lisp-dot
leftvec3
rightvec3
vec3-dotleftright