CVector.h
上传用户:arsena_zhu
上传日期:2022-07-12
资源大小:399k
文件大小:5k
- /*
- Class Name:
- CVector3.
- Created by:
- Allen Sherrod (Programming Ace of www.UltimateGameProgramming.com).
- Description:
- This class represents a 3D point for a vertex's x, y, z.
- */
- #ifndef CVECTOR_H
- #define CVECTOR_H
- #include "main.h"
- /*******************************************************************************
- * VECTOR
- *******************************************************************************/
- class CVector
- {
- public:
- CVector(); // Constructor.
- CVector(float X, float Y, float Z); // Overloaded constructor.
- CVector(const CVector &v); // Another overloaded constructor.
- void operator=(CVector v); // Overloaded = sign.
- void operator=(float f); // Overloaded = sign.
- CVector operator-(CVector v); // Overloaded - sign.
- CVector operator+(CVector v); // Overloaded + sign.
- CVector operator*(CVector v); // Overloaded * sign.
- CVector operator/(CVector v); // Overloaded / sign.
- CVector operator+(float f); // Overloaded + sign.
- CVector operator-(float f); // Overloaded - sign.
- CVector operator*(float f); // Overloaded * sign.
- CVector operator/(float f); // Overloaded / sign.
- void operator +=(CVector v); // Overloaded += sign.
- void operator -=(CVector v); // Overloaded -= sign.
- void operator *=(CVector v); // Overloaded *= sign.
- void operator /=(CVector v); // Overloaded /= sign.
- void operator +=(float f); // Overloaded += sign.
- void operator -=(float f); // Overloaded -= sign.
- void operator *=(float f); // Overloaded *= sign.
- void operator /=(float f); // Overloaded /= sign.
- bool operator >(CVector v); // Overloaded > sign.
- bool operator <(CVector v); // Overloaded < sign.
- bool operator >(float f); // Overloaded > sign.
- bool operator <(float f); // Overloaded < sign.
- bool operator ==(CVector v); // Overloaded == sign.
- bool operator !=(CVector v); // Overloaded != sign.
- void CrossProduct(CVector v1, CVector v2); // Stores cross product of v1, v2.
- void CrossProduct3(CVector v1, CVector v2,
- CVector v3); // Stores cross product of v1, v2, v3.
- float DotProduct3(CVector v1); // Dot 3 on v1 and this.
- float GetLength(); // Return this objects length.
- void Normal(); // Normalize this vector.
- CVector Normalized(); // Normalize this vector.
- void Normalize(CVector Triangle[]); // Find the normal of a triangle.
- /*
- void CalculateTangentVector(CVector Point1,
- CVector Point2,
- CVector Point3,
- CVector NormalOfA,
- CTexCoord P1Tex,
- CTexCoord P2Tex,
- CTexCoord P3Tex); // Cacluate a tagent vector & store here.
- */
- void ExtendVertexPos(CVector lightPos, // Extend point based on light position
- float Extend); // and currend point, saves here.
- void ExtendVertexPos(CVector currentVertex, // Takes current point and source and
- CVector lightPos, // extend and saves here.
- float Extend);
- CVector GetRotatedX(double angle); // Rotate along x.
- CVector GetRotatedY(double angle); // Rotate alone y.
- CVector GetRotatedZ(double angle); // Rotate along z.
- CVector GetRotatedAxis(double angle, CVector axis);// Rotate along an axis.
- void CalculateBinormalVector(CVector tangent,
- CVector normal); // Calcluate a binormal.
- void ClampTo01(); // Clamp this vector between 0 and 1.
- void Set(CVector v)
- { x = v.x; y = v.y; z = v.z; }
- void Set(float X, float Y, float Z)
- { x=X; y=Y; z=Z; }
- void NoiseAngle()
- {
- x += ((float)(rand()%50)-25)/50;
- y += ((float)(rand()%50)-25)/50;
- z += ((float)(rand()%50)-25)/50;
- }
- float x, y, z; // vertex's x, y, and z info.
- };
- #endif
- // Copyright September 2003
- // All Rights Reserved!
- // Allen Sherrod
- // ProgrammingAce@UltimateGameProgramming.com
- // www.UltimateGameProgramming.com