2013-02-16 16:14:39 -08:00

50 lines
1.0 KiB
C++

#ifndef GPOINT_H
#define GPOINT_H
#include "../zone/map.h"
class GPoint {
public:
GPoint();
GPoint(const GPoint &them);
GPoint(VERTEX &v);
GPoint(float x, float y, float z);
inline void operator()(float nx, float ny, float nz) { x = nx; y = ny; z = nz; }
GPoint cross(const GPoint &them) const;
float dot3(const GPoint &them) const;
const GPoint &operator+=(const GPoint &them);
const GPoint &operator*=(const float num);
float x;
float y;
float z;
};
GPoint operator-(const GPoint &v1, const GPoint &v2);
bool operator<(const GPoint &v1, const GPoint &v2);
bool operator>(const GPoint &v1, const GPoint &v2);
class GVector : public GPoint {
public:
GVector();
GVector(const GPoint &them);
GVector(const GPoint &from, const GPoint &to);
GVector(float x, float y, float z, float w = 1.0f);
inline void operator()(float nx, float ny, float nz, float nw) { x = nx; y = ny; z = nz; W = nw; }
float dot4(const GVector &them) const;
float dot4(const GPoint &them) const;
void normalize();
float length();
float W;
};
#endif