Mathematical vector operations.
[]
.VectorProto
defines most of the functions.
Vectors implements also:
Sequable
Sequencial
IFn
Counted
equals
and toString
from Object
That means that vectors can be destructured, treated as sequence or called as a function. See vec2
for examples.
Mathematical vector operations. ### Types * Fixed size (custom types): * Vec2 - 2d vector, creator [[vec2]] * Vec3 - 3d vector, creator [[vec3]] * Vec4 - 4d vector, creator [[vec4]] * ArrayVec - fixed size vector as double array, n-dimensional, creator [[arrayvec]] * Variable size: * Clojure's PersistentVector, creator `[]`. [[VectorProto]] defines most of the functions. Vectors implements also: * `Sequable` * `Sequencial` * `IFn` * `Counted` * `equals` and `toString` from `Object` That means that vectors can be destructured, treated as sequence or called as a function. See [[vec2]] for examples.
(aligned? v1 v2)
Are vectors aligned (have the same direction)?
Are vectors aligned (have the same direction)?
(angle-between v1 v2)
Angle between two vectors
See also relative-angle-between
.
Angle between two vectors See also [[relative-angle-between]].
(array-vec xs)
Make ArrayVec type based on provided sequence xs
.
Make ArrayVec type based on provided sequence `xs`.
(average-vectors vs)
(average-vectors init vs)
Average / centroid of vectors. Input: initial vector (optional), list of vectors
Average / centroid of vectors. Input: initial vector (optional), list of vectors
(dist v1 v2)
Euclidean distance between vectors
Euclidean distance between vectors
(dist-abs v1 v2)
Manhattan distance between vectors
Manhattan distance between vectors
(dist-cheb v1 v2)
Chebyshev distance between 2d vectors
Chebyshev distance between 2d vectors
(dist-discrete v1 v2)
Discrete distance between 2d vectors
Discrete distance between 2d vectors
(dist-sq v1 v2)
Squared Euclidean distance between vectors
Squared Euclidean distance between vectors
(ediv v1 v2)
Element-wise division of two vectors.
Element-wise division of two vectors.
(faceforward n v)
Flip normal n
to match the same direction as v
.
Flip normal `n` to match the same direction as `v`.
(generate-vec2 f)
(generate-vec2 f1 f2)
Generate Vec2 with fn(s)
Generate Vec2 with fn(s)
(generate-vec3 f)
(generate-vec3 f1 f2 f3)
Generate Vec3 with fn(s)
Generate Vec3 with fn(s)
(generate-vec4 f)
(generate-vec4 f1 f2 f3 f4)
Generate Vec4 with fn(s)
Generate Vec4 with fn(s)
(limit v len)
Limit length of the vector by given value
Limit length of the vector by given value
(normalize v)
Normalize vector (set length = 1.0)
Normalize vector (set length = 1.0)
(relative-angle-between v1 v2)
Angle between two vectors relative to each other.
See also angle-between
.
Angle between two vectors relative to each other. See also [[angle-between]].
Tolerance used in [[is-near-zero?]]. Values less than this value are treated as zero.
Tolerance used in [[is-near-zero?]]. Values less than this value are treated as zero.
Vector operations
Vector operations
(to-vec v)
Convert to Clojure primitive vector Vec
.
Convert to Clojure primitive vector `Vec`.
(dot v1 v2)
Dot product of two vectors.
Dot product of two vectors.
(permute v idxs)
Permute vector elements with given indices.
Permute vector elements with given indices.
(applyf v f)
Apply function to all vector values (like map but returns the same type).
Apply function to all vector values (like map but returns the same type).
(add v1)
(add v1 v2)
Sum of two vectors.
Sum of two vectors.
(approx v)
(approx v d)
Round to 2 (or d
) decimal places
Round to 2 (or `d`) decimal places
(cross v1 v2)
Cross product
Cross product
(reciprocal v)
Reciprocal of elements.
Reciprocal of elements.
(sum v1)
Sum of elements
Sum of elements
(emn v1 v2)
Element-wise min from two vectors.
Element-wise min from two vectors.
(is-near-zero? v1)
Is vector almost zero? (all absolute values of elements are less than TOLERANCE
)
Is vector almost zero? (all absolute values of elements are less than `TOLERANCE`)
(heading v1)
Angle between vector and unit vector [1,0,...]
Angle between vector and unit vector `[1,0,...]`
(axis-rotate v1 angle axis)
(axis-rotate v1 angle axis pivot)
Rotate around axis, 3d only
Rotate around axis, 3d only
(magsq v1)
Length of the vector squared.
Length of the vector squared.
(to-polar v1)
To polar coordinates (2d, 3d only), first element is length, the rest angle.
To polar coordinates (2d, 3d only), first element is length, the rest angle.
(transform v1 o vx vy)
(transform v1 o vx vy vz)
Transform vector; map point to coordinate system defined by origin, vx and vy (as bases), 2d and 3d only.
Transform vector; map point to coordinate system defined by origin, vx and vy (as bases), 2d and 3d only.
(mag v1)
length of the vector.
length of the vector.
(from-polar v1)
From polar coordinates (2d, 3d only)
From polar coordinates (2d, 3d only)
(sub v1)
(sub v1 v2)
Subtraction of two vectors.
Subtraction of two vectors.
(mindim v)
Index of minimum value.
Index of minimum value.
(is-zero? v1)
Is vector zero?
Is vector zero?
(econstrain v val1 val2)
Element-wise constrain
Element-wise constrain
(base-from v)
List of perpendicular vectors (basis)
List of perpendicular vectors (basis)
(emult v1 v)
Element-wise vector multiplication (Hadamard product).
Element-wise vector multiplication (Hadamard product).
(maxdim v)
Index of maximum value.
Index of maximum value.
(emx v1 v2)
Element-wise max from two vectors.
Element-wise max from two vectors.
(interpolate v1 v2 t)
(interpolate v1 v2 t f)
Interpolate vectors, optionally set interpolation fn
Interpolate vectors, optionally set interpolation fn
(perpendicular v1)
(perpendicular v1 v2)
Perpendicular vector (only 2d).
Perpendicular vector (only 2d).
(div v1 v)
Divide vector by number v
Divide vector by number `v`
(mn v1)
Minimum value of vector elements
Minimum value of vector elements
(abs v1)
Absolute value of vector elements
Absolute value of vector elements
(einterpolate v1 v2 v)
(einterpolate v1 v2 v f)
Interpolate vectors element-wise, optionally set interpolation fn
Interpolate vectors element-wise, optionally set interpolation fn
(mx v1)
Maximum value of vector elements
Maximum value of vector elements
(mult v1 v)
Multiply vector by number v
.
Multiply vector by number `v`.
(rotate v1 angle)
(rotate v1 anglex angley anglez)
Rotate vector
Rotate vector
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close