graphmath v1.0.5 Graphmath.Vec3
This is the 3D mathematics library for graphmath.
This submodule handles 3D vectors using tuples of floats.
Link to this section Summary
Functions
add( a, b)
adds two vec3
s
create()
creates a zeroed vec3
create(vec)
creates a vec3
from a list of 3 or more floats
create(x,y,z)
creates a vec3
of value (x,y,z)
cross( a, b)
finds the cross productof one vec3
with another vec3
dot( a, b)
finds the dot (inner) product of one vec3
with another vec3
length(a)
finds the length (Eucldiean or L2 norm) of a vec3
length_manhattan(a)
finds the Manhattan (L1 norm) length of a vec3
length_squared(a)
finds the square of the length of a vec3
lerp(a,b,t)
linearly interpolates between one vec3
and another vec3
along an interpolant
multiply( a, b)
multiplies element-wise a vec3
by another vec3
near(a,b, distance)
checks whether two vec3
s are within a certain distance of each other
normalize(a)
finds the unit vector with the same direction as a vec3
rotate( v, k, theta)
rotates a vector (v) about a unit vector (k) by theta radians
scale( a, scale)
uniformly scales a vec3
subtract(a, b)
subtracts one vec3
from another vec3
Link to this section Types
vec3()
Link to this section Functions
add(a, b)
add( a, b)
adds two vec3
s.
a
is the first vec3
.
b
is the second vec3
.
It returns a vec3
of the form { ax + bx, ay + by, az + bz }.
create()
create() :: vec3()
create() :: vec3()
create()
creates a zeroed vec3
.
It takes no arguments.
It returns a vec3
of the form { 0.0, 0.0, 0.0 }
.
create(vec)
create(vec)
creates a vec3
from a list of 3 or more floats.
vec
is a list of 3 or more floats.
It returns a vec3
of the form {x,y,z}
, where x
, y
, and z
are the first three elements in vec
.
create(x, y, z)
create(x,y,z)
creates a vec3
of value (x,y,z).
x
is the first element of the vec3
to be created.
y
is the second element of the vec3
to be created.
z
is the third element of the vec3
to be created.
It returns a vec3
of the form {x,y,z}
.
cross(a, b)
cross( a, b)
finds the cross productof one vec3
with another vec3
.
a
is the first vec3
.
b
is the second vec3
.
It returns a float of the value ( aybz - azby, azbx - axbz, axby - aybx).
The cross product of two vectors is a vector perpendicular to the two source vectors. Its magnitude will be the area of the parallelogram made by the two souce vectors.
dot(a, b)
dot( a, b)
finds the dot (inner) product of one vec3
with another vec3
.
a
is the first vec3
.
b
is the second vec3
.
It returns a float of the value (axbx + ayby + azbz).
length(a)
length(a)
finds the length (Eucldiean or L2 norm) of a vec3
.
a
is the vec3
to find the length of.
It returns a float of the value (sqrt( ax2 + ay2 + az2)).
length_manhattan(a)
length_manhattan(a)
finds the Manhattan (L1 norm) length of a vec3
.
a
is the vec3
to find the Manhattan length of.
It returns a float of the value (ax + ay + az).
The Manhattan length is the sum of the components.
length_squared(a)
length_squared(a)
finds the square of the length of a vec3
.
a
is the vec3
to find the length squared of.
It returns a float of the value ax2 + ay2 + az2.
In many cases, this is sufficient for comparisons and avoids a square root.
lerp(a, b, t)
lerp(a,b,t)
linearly interpolates between one vec3
and another vec3
along an interpolant.
a
is the starting vec3
.
b
is the ending vec3
.
t
is the interpolant float, on the domain [0,1].
It returns a vec3
of the form (1-t)a - (t)b.
The interpolant t
is on the domain [0,1]. Behavior outside of that is undefined.
multiply(a, b)
multiply( a, b)
multiplies element-wise a vec3
by another vec3
.
a
is the vec3
multiplicand.
b
is the vec3
multiplier.
It returns a vec3
of the form { axbx, ayby, azbz }.
near(a, b, distance)
near(a,b, distance)
checks whether two vec3
s are within a certain distance of each other.
a
is the first vec3
.
b
is the second vec3
.
distance
is the distance between them as a float.
normalize(a)
normalize(a)
finds the unit vector with the same direction as a vec3
.
a
is the vec3
to be normalized.
It returns a vec3
of the form {normx, normy, normz}
.
This is done by dividing each component by the vector's magnitude.
rotate(v, k, theta)
rotate( v, k, theta)
rotates a vector (v) about a unit vector (k) by theta radians.
v
is the vec3
to be rotated.
k
is the vec3
axis of rotation. It must be of unit length.
theta
is the angle in radians to rotate as a float.
This uses the Formula of Rodriguez:
Vrot = Vcos(theta) + (K x V)sin(theta) + K(K dot V)(1-cos(theta))
scale(a, scale)
scale( a, scale)
uniformly scales a vec3
.
a
is the vec3
to be scaled.
scale
is the float to scale each element of a
by.
It returns a tuple of the form { axscale, ayscale, azscale }.
subtract(a, b)
subtract(a, b)
subtracts one vec3
from another vec3
.
a
is the vec3
minuend.
b
is the vec3
subtrahend.
It returns a vec3
of the form { ax - bx, ay - by, az - bz }.
(the terminology was found here).