1
0
Fork 0
2018-soft-3d-renderer/src/vec.cpp

59 lines
953 B
C++
Raw Normal View History

2018-09-19 05:33:52 +00:00
#include "vec.h"
#include "util.h"
#include <cmath>
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;
}