Files
batomorph/src/vec3.c

52 lines
700 B
C

#include "vec3.h"
#include <math.h>
vec3_t vec3_scale(vec3_t v, double s)
{
v.x *= s;
v.y *= s;
v.z *= s;
return v;
}
vec3_t vec3_add(vec3_t v, vec3_t u)
{
v.x += u.x;
v.y += u.y;
v.z += u.z;
return v;
}
vec3_t vec3_sub(vec3_t v, vec3_t u)
{
v.x -= u.x;
v.y -= u.y;
v.z -= u.z;
return v;
}
double vec3_dot(vec3_t v, vec3_t u)
{
return v.x * u.x + v.y * u.y + v.z * u.z;
}
vec3_t vec3_cross(vec3_t v, vec3_t u)
{
return (vec3_t) {
.x = v.y * u.z - v.z * u.y,
.y = v.z * u.x - v.x * u.z,
.z = v.x * u.y - v.y * u.x,
};
}
double vec3_len(vec3_t v)
{
return sqrt(v.x * v.x + v.y * v.y + v.z * v.z);
}
vec3_t vec3_unit(vec3_t v)
{
return vec3_scale(v, 1.0 / vec3_len(v));
}