Add add_vectors() and sub_vectors()
This commit is contained in:
parent
2733b17af8
commit
723155a2ce
56
src/vector.c
56
src/vector.c
@ -60,6 +60,62 @@ bool vector_product(vector *a, vector *b, vector *c)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add vector a to vector b and store the result in c,
|
||||||
|
* such as: c = a + b.
|
||||||
|
* This function is aliasing safe.
|
||||||
|
*
|
||||||
|
* @param a vector
|
||||||
|
* @param b vector
|
||||||
|
* @param c vector [out]
|
||||||
|
* @return true/false for success/failure
|
||||||
|
*/
|
||||||
|
bool add_vectors(vector *a, vector *b, vector *c)
|
||||||
|
{
|
||||||
|
vector a_tmp,
|
||||||
|
b_tmp;
|
||||||
|
|
||||||
|
if (!a || !b)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
copy_vector(a, &a_tmp);
|
||||||
|
copy_vector(b, &b_tmp);
|
||||||
|
|
||||||
|
c->x = a_tmp.x + b_tmp.x;
|
||||||
|
c->y = a_tmp.y + b_tmp.y;
|
||||||
|
c->z = a_tmp.z + b_tmp.z;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Substract vector b from vector a and store the result in c,
|
||||||
|
* such as: c = a - b.
|
||||||
|
* This function is aliasing safe.
|
||||||
|
*
|
||||||
|
* @param a vector
|
||||||
|
* @param b vector
|
||||||
|
* @param c vector [out]
|
||||||
|
* @return true/false for success/failure
|
||||||
|
*/
|
||||||
|
bool sub_vectors(vector *a, vector *b, vector *c)
|
||||||
|
{
|
||||||
|
vector a_tmp,
|
||||||
|
b_tmp;
|
||||||
|
|
||||||
|
if (!a || !b)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
copy_vector(a, &a_tmp);
|
||||||
|
copy_vector(b, &b_tmp);
|
||||||
|
|
||||||
|
c->x = a_tmp.x - b_tmp.x;
|
||||||
|
c->y = a_tmp.y - b_tmp.y;
|
||||||
|
c->z = a_tmp.z - b_tmp.z;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize a vector into a unit vector
|
* Normalize a vector into a unit vector
|
||||||
* of length 1. This function is aliasing safe.
|
* of length 1. This function is aliasing safe.
|
||||||
|
Loading…
Reference in New Issue
Block a user