nuclear@23: #ifndef VECTOR_H_ nuclear@23: #define VECTOR_H_ nuclear@23: nuclear@23: class Vector2 { nuclear@23: public: nuclear@23: float x, y; nuclear@23: nuclear@23: Vector2(); nuclear@23: Vector2(float x, float y); nuclear@23: }; nuclear@23: nuclear@23: class Vector3 { nuclear@23: public: nuclear@23: float x, y, z; nuclear@23: nuclear@23: Vector3(); nuclear@23: Vector3(float x, float y, float z); nuclear@54: Vector3(const float *arr); nuclear@23: nuclear@23: void normalize(); nuclear@23: inline float length(); nuclear@23: inline float lengthsq(); nuclear@23: }; nuclear@23: nuclear@23: inline Vector3 operator +(const Vector3 &a, const Vector3 &b); nuclear@23: inline Vector3 operator -(const Vector3 &a, const Vector3 &b); nuclear@23: inline Vector3 operator *(const Vector3 &a, const Vector3 &b); nuclear@23: inline Vector3 operator /(const Vector3 &a, const Vector3 &b); nuclear@23: nuclear@23: inline Vector3 operator -(const Vector3 &vec); nuclear@23: inline Vector3 operator *(const Vector3 &vec, float s); nuclear@54: inline Vector3 operator /(const Vector3 &vec, float s); nuclear@23: nuclear@23: inline float dot(const Vector3 &a, const Vector3 &b); nuclear@23: inline Vector3 cross(const Vector3 &a, const Vector3 &b); nuclear@23: nuclear@54: inline Vector3 reflect(const Vector3 &v, const Vector3 &n); nuclear@54: nuclear@23: #include "vector.inl" nuclear@23: nuclear@23: #endif /* VECTOR_H_ */