#include "vec.h" #include "util.h" #include void VectorNormalize(Vector &v) { float length = VectorLength(v); // zero length if (length == 0.0f) { v.x = 0.0f; v.y = 0.0f; v.z = 0.0f; } else { float lengthInv = 1.0f / length; v.x *= lengthInv; v.y *= lengthInv; v.z *= lengthInv; } } float VectorLength(Vector &v) { float result = sqrtf(v.x * v.x + v.y * v.y + v.z * v.z); // zero length if (result < EPSILON_E3) { result = 0.0f; } return result; } float VectorDot(Vector &v1, Vector &v2) { float result; result = (v1.x * v2.x) + (v1.y * v2.y) + (v1.z * v2.z); return result; } Vector VectorCross(Vector &v1, Vector &v2) { Vector result; result.x = (v1.y * v2.z) - (v1.z * v2.y); result.y = (v1.z * v2.x) - (v1.x * v2.z); result.z = (v1.x * v2.y) - (v1.y * v2.x); return result; }