2016-03-21 04:10:14 +00:00
|
|
|
#ifndef VEC_H
|
|
|
|
#define VEC_H
|
|
|
|
|
|
|
|
namespace New3D {
|
|
|
|
namespace V3
|
|
|
|
{
|
|
|
|
typedef float Vec3[3];
|
|
|
|
|
|
|
|
void subtract (const Vec3 a, const Vec3 b, Vec3 out);
|
|
|
|
void subtract (Vec3 a, const Vec3 b);
|
|
|
|
void add (const Vec3 a, const Vec3 b, Vec3 out);
|
|
|
|
void add (Vec3 a, const Vec3 b);
|
|
|
|
void divide (Vec3 a, float number);
|
|
|
|
void multiply (Vec3 a, float number);
|
|
|
|
void multiply (Vec3 a, const Vec3 b);
|
|
|
|
void multiply (const Vec3 a, const Vec3 b, Vec3 out);
|
|
|
|
void crossProduct (const Vec3 v1, const Vec3 v2, Vec3 cross);
|
|
|
|
float dotProduct (const Vec3 v1, const Vec3 v2);
|
|
|
|
void copy (const Vec3 in, Vec3 out);
|
|
|
|
void inverse (Vec3 v);
|
|
|
|
float length (const Vec3 v);
|
|
|
|
void normalise (Vec3 v);
|
|
|
|
void multiplyAdd (const Vec3 a, float scale, const Vec3 b, Vec3 out);
|
|
|
|
void reset (Vec3 v);
|
|
|
|
void set (Vec3 v, float value);
|
|
|
|
void set (Vec3 v, float x, float y, float z);
|
|
|
|
void reflect (const Vec3 a, const Vec3 b, Vec3 out);
|
|
|
|
void createNormal (const Vec3 a, const Vec3 b, const Vec3 c, Vec3 outNormal); // assume a,b,c are wound clockwise
|
|
|
|
void _max (Vec3 a, const Vec3 compare);
|
|
|
|
void _min (Vec3 a, const Vec3 compare);
|
|
|
|
bool cmp (const Vec3 a, float b);
|
|
|
|
bool cmp (const Vec3 a, const Vec3 b);
|
|
|
|
void clamp (Vec3 a, float _min, float _max);
|
|
|
|
}
|
2016-06-16 20:05:29 +00:00
|
|
|
|
|
|
|
namespace V4
|
|
|
|
{
|
|
|
|
typedef float Vec4[4];
|
|
|
|
}
|
2016-03-21 04:10:14 +00:00
|
|
|
} // New3D
|
|
|
|
|
|
|
|
#endif
|