Initial commit
This commit is contained in:
146
Torque/SDK/lib/maxsdk31/point4.h
Normal file
146
Torque/SDK/lib/maxsdk31/point4.h
Normal file
@@ -0,0 +1,146 @@
|
||||
/**********************************************************************
|
||||
*<
|
||||
FILE: point4.h
|
||||
|
||||
DESCRIPTION: Class definitions for Point4
|
||||
|
||||
CREATED BY: Dan Silva
|
||||
|
||||
HISTORY:
|
||||
|
||||
*> Copyright (c) 1994, All Rights Reserved.
|
||||
**********************************************************************/
|
||||
|
||||
#ifndef _POINT4_H
|
||||
|
||||
#define _POINT4_H
|
||||
|
||||
#include "point3.h"
|
||||
|
||||
class DllExport Point4 {
|
||||
public:
|
||||
float x,y,z,w;
|
||||
|
||||
// Constructors
|
||||
Point4(){}
|
||||
Point4(float X, float Y, float Z, float W) { x = X; y = Y; z = Z; w = W; }
|
||||
Point4(double X, double Y, double Z, double W) { x = (float)X; y = (float)Y; z = (float)Z; w = (float)W; }
|
||||
Point4(int X, int Y, int Z, int W) { x = (float)X; y = (float)Y; z = (float)Z; w = (float)W; }
|
||||
Point4(const Point3& a, float W=0.0f) { x = a.x; y = a.y; z = a.z; w = W; }
|
||||
Point4(const Point4& a) { x = a.x; y = a.y; z = a.z; w = a.w; }
|
||||
Point4(float af[4]) { x = af[0]; y = af[1]; z = af[2]; w = af[3]; }
|
||||
|
||||
// Data members
|
||||
static const Point4 Origin;
|
||||
static const Point4 XAxis;
|
||||
static const Point4 YAxis;
|
||||
static const Point4 ZAxis;
|
||||
static const Point4 WAxis;
|
||||
|
||||
// Access operators
|
||||
float& operator[](int i) { return (&x)[i]; }
|
||||
const float& operator[](int i) const { return (&x)[i]; }
|
||||
|
||||
// Conversion function
|
||||
operator float*() { return(&x); }
|
||||
|
||||
// Unary operators
|
||||
Point4 operator-() const { return(Point4(-x,-y,-z, -w)); }
|
||||
Point4 operator+() const { return *this; }
|
||||
|
||||
// Assignment operators
|
||||
inline Point4& operator-=(const Point4&);
|
||||
inline Point4& operator+=(const Point4&);
|
||||
inline Point4& operator*=(float);
|
||||
inline Point4& operator/=(float);
|
||||
inline Point4& operator*=(const Point4&); // element-by-element multiply.
|
||||
inline Point4& Set(float X, float Y, float Z, float W);
|
||||
|
||||
// Test for equality
|
||||
int operator==(const Point4& p) const { return ((p.x==x)&&(p.y==y)&&(p.z==z)&&(p.w==w)); }
|
||||
int operator!=(const Point4& p) const { return ((p.x!=x)||(p.y!=y)||(p.z!=z)||(p.w!=w)); }
|
||||
int Equals(const Point4& p, float epsilon = 1E-6f);
|
||||
|
||||
// Binary operators
|
||||
inline Point4 operator-(const Point4&) const;
|
||||
inline Point4 operator+(const Point4&) const;
|
||||
inline Point4 operator/(const Point4&) const;
|
||||
inline Point4 operator*(const Point4&) const;
|
||||
|
||||
};
|
||||
|
||||
// Inlines:
|
||||
|
||||
inline Point4& Point4::operator-=(const Point4& a) {
|
||||
x -= a.x; y -= a.y; z -= a.z; w -= a.w;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4& Point4::operator+=(const Point4& a) {
|
||||
x += a.x; y += a.y; z += a.z; w += a.w;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4& Point4::operator*=(float f) {
|
||||
x *= f; y *= f; z *= f; w *= f;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4& Point4::operator/=(float f) {
|
||||
if (f==0.0f) f = .000001f;
|
||||
x /= f; y /= f; z /= f; w /= f;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4& Point4::operator*=(const Point4& a) {
|
||||
x *= a.x; y *= a.y; z *= a.z; w *= a.w;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4& Point4::Set(float X, float Y, float Z, float W) {
|
||||
x = X;
|
||||
y = Y;
|
||||
z = Z;
|
||||
w = W;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline Point4 Point4::operator-(const Point4& b) const {
|
||||
return(Point4(x-b.x,y-b.y,z-b.z, w-b.w));
|
||||
}
|
||||
|
||||
inline Point4 Point4::operator+(const Point4& b) const {
|
||||
return(Point4(x+b.x,y+b.y,z+b.z, w+b.w));
|
||||
}
|
||||
|
||||
inline Point4 Point4::operator/(const Point4& b) const {
|
||||
return Point4(x/b.x,y/b.y,z/b.z,w/b.w);
|
||||
}
|
||||
|
||||
inline Point4 Point4::operator*(const Point4& b) const {
|
||||
return Point4(x*b.x, y*b.y, z*b.z,w*b.w);
|
||||
}
|
||||
|
||||
inline Point4 operator*(float f, const Point4& a) {
|
||||
return(Point4(a.x*f, a.y*f, a.z*f, a.w*f));
|
||||
}
|
||||
|
||||
inline Point4 operator*(const Point4& a, float f) {
|
||||
return(Point4(a.x*f, a.y*f, a.z*f, a.w*f));
|
||||
}
|
||||
|
||||
inline Point4 operator/(const Point4& a, float f) {
|
||||
return(Point4(a.x/f, a.y/f, a.z/f, a.w/f));
|
||||
}
|
||||
|
||||
inline Point4 operator+(const Point4& a, float f) {
|
||||
return(Point4(a.x+f, a.y+f, a.z+f, a.w+f));
|
||||
}
|
||||
|
||||
inline int Point4::Equals(const Point4& p, float epsilon) {
|
||||
return (fabs(p.x - x) <= epsilon && fabs(p.y - y) <= epsilon
|
||||
&& fabs(p.z - z) <= epsilon && fabs(p.w - w) <= epsilon);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user