graphmath v1.0.4 Graphmath.Vec2

This is the 2D mathematics library for graphmath.

This submodule handles vectors stored as a tuple.

Link to this section Summary

Functions

add( a, b) adds a vec2 (a) to a vec2 (b)

create() creates a zero vec2

create(vec) creates a vec2 from a list of 2 or more floats

create(x,y) creates a vec2 of value (x,y)

dot( a, b ) finds the dot (inner) product of one vec2 with another vec2

length(a) finds the length (Eucldiean or L2 norm) of a vec2

length_manhattan(a) finds the Manhattan (L1 norm) length of a vec2

length_squared(a) finds the square of the length of a vec2 (a)

lerp(a,b,t) is used to linearly interpolate between two given vectors a and b along an interpolant t

multiply( a, b) mulitplies element-wise a vec2 (a) by a vec2 (b)

near(a,b, distance) checks whether two vec2s are within a certain distance of each other

normalize(a) finds the unit vector with the same direction as a vec2

perp(a) creates a vector perpendicular to another vector a

perp_prod( a, b ) finds the perpindicular product of one vec2 with another vec2

project(a,b) projects one vec2 onto another vec2

rotate(a,theta) rotates a vec2 CCW about the +Z axis

scale( a, scale ) uniformly scales a vec2

subtract(a, b ) subtracts one vec2 from another vec2

Link to this section Types

Link to this type

vec2()
vec2() :: {float(), float()}

Link to this section Functions

Link to this function

add(a, b)
add(vec2(), vec2()) :: vec2()

add( a, b) adds a vec2 (a) to a vec2 (b).

It returns a tuple of the form { ax + bx, ay + by }.

add( a, b ) adds two vec2s.

a is the first vec2.

b is the second vec2.

It returns a vec2 of the form { ax + bx, ay + by }.

Link to this function

create()
create() :: vec2()

create() creates a zero vec2.

It will return a tuple of the form {0.0,0.0}. create() creates a zeroed vec2.

It takes no arguments.

It returns a vec2 of the form { 0.0, 0.0 }.

Link to this function

create(vec)
create([float()]) :: vec2()

create(vec) creates a vec2 from a list of 2 or more floats.

vec is a list of 2 or more floats.

It returns a vec2 of the form {x,y}, where x and y are the first three elements in vec.

Link to this function

create(x, y)
create(float(), float()) :: vec2()

create(x,y) creates a vec2 of value (x,y).

x is the first element of the vec3 to be created.

y is the second element of the vec3 to be created.

It returns a vec2 of the form {x,y}.

Link to this function

dot(a, b)
dot(vec2(), vec2()) :: float()

dot( a, b ) finds the dot (inner) product of one vec2 with another vec2.

a is the first vec2.

b is the second vec2.

It returns a float of the value (axbx + ayby ).

Link to this function

length(a)
length(vec2()) :: float()

length(a) finds the length (Eucldiean or L2 norm) of a vec2.

a is the vec2 to find the length of.

It returns a float of the value (sqrt( ax2 + ay2)).

Link to this function

length_manhattan(a)
length_manhattan(vec2()) :: float()

length_manhattan(a) finds the Manhattan (L1 norm) length of a vec2.

a is the vec2 to find the Manhattan length of.

It returns a float of the value (ax + ay).

The Manhattan length is the sum of the components.

Link to this function

length_squared(a)
length_squared(vec2()) :: float()

length_squared(a) finds the square of the length of a vec2 (a).

In many cases, this is sufficient for comparisions and avaoids a sqrt.

It returns a float of the value (axax + ayay). length_squared(a) finds the square of the length of a vec2.

a is the vec2 to find the length squared of.

It returns a float of the value ax2 + ay2.

In many cases, this is sufficient for comparisons and avoids a square root.

Link to this function

lerp(a, b, t)
lerp(vec2(), vec2(), float()) :: vec2()

lerp(a,b,t) is used to linearly interpolate between two given vectors a and b along an interpolant t.

The interpolant t is on the domain [0,1]. Behavior outside of that is undefined. lerp(a,b,t) linearly interpolates between one vec2 and another vec2 along an interpolant.

a is the starting vec2.

b is the ending vec2.

t is the interpolant float, on the domain [0,1].

It returns a vec2 of the form (1-t)a - (t)b.

The interpolant t is on the domain [0,1]. Behavior outside of that is undefined.

Link to this function

multiply(a, b)
multiply(vec2(), vec2()) :: vec2()

multiply( a, b) mulitplies element-wise a vec2 (a) by a vec2 (b).

It returns a tuple of the form { axbx, ayby }. multiply( a, b ) multiplies element-wise a vec2 by another vec2.

a is the vec2 multiplicand.

b is the vec2 multiplier.

It returns a vec2 of the form { axbx, ayby }.

Link to this function

near(a, b, distance)
near(vec2(), vec2(), float()) :: boolean()

near(a,b, distance) checks whether two vec2s are within a certain distance of each other.

a is the first vec2.

b is the second vec2.

distance is the distance between them as a float.

Link to this function

normalize(a)
normalize(vec2()) :: vec2()

normalize(a) finds the unit vector with the same direction as a vec2.

a is the vec2 to be normalized.

It returns a vec2 of the form {normx, normy}.

This is done by dividing each component by the vector's magnitude.

Link to this function

perp(a)
perp(vec2()) :: vec2()

perp(a) creates a vector perpendicular to another vector a.

a is the vec2 to be perpindicular to.

This returns a vec2 perpindicular to a, to the right of the original a.

Link to this function

perp_prod(a, b)
perp_prod(vec2(), vec2()) :: float()

perp_prod( a, b ) finds the perpindicular product of one vec2 with another vec2.

a is the first vec2.

b is the second vec2.

The perpindicular product is the magnitude of the cross-product between the two vectors.

It returns a float of the value (axby - bxay).

Link to this function

project(a, b)
project(vec2(), vec2()) :: vec2()

project(a,b) projects one vec2 onto another vec2.

a is the first vec2.

b is the second vec2.

This returns a vec2 representing the image of a in the direction of b.

Link to this function

rotate(a, theta)
rotate(vec2(), float()) :: vec2()

rotate(a,theta) rotates a vec2 CCW about the +Z axis.

a is the vec2 to rotate.

theta is the number of radians to rotate by as a float.

This returns a vec2.

Link to this function

scale(a, scale)
scale(vec2(), float()) :: vec2()

scale( a, scale ) uniformly scales a vec2.

a is the vec2 to be scaled.

scale is the float to scale each element of a by.

It returns a tuple of the form { axscale, ayscale }.

Link to this function

subtract(a, b)
subtract(vec2(), vec2()) :: vec2()

subtract(a, b ) subtracts one vec2 from another vec2.

a is the vec2 minuend.

b is the vec2 subtrahend.

It returns a vec2 of the form { ax - bx, ay - by }.

(the terminology was found here).