home *** CD-ROM | disk | FTP | other *** search
- #ifndef _GRVECTOR_H
- #define _GRVECTOR_H
-
- #include "grDefines.hpp"
-
- class grVector // REPRESENT VECTOR FOR OPERATIONS
- {
- public:
-
- grVector( void ); // DEFAULT CTOR
-
- grVector( // BUILD FROM COORDINATES
- double x, double y, // -- x, y location
- double z, // -- z value
- double h = 0.0 ); // -- homogoneous scaling factor
-
- grVector operator +=( // ADD ANOTHER VECTOR
- const grVector & o ); // -- vector to add
-
- friend grVector operator *( // MULTIPLY BY SCALAR
- double s, // -- scalar value
- const grVector & vec ); // -- vector to multiply
-
- friend grVector operator +( // ADD TWO VECTORS
- const grVector & v1, // -- vector 1
- const grVector & v2 ); // -- vector 2
-
- friend grVector operator -( // SUBTRACT TWO VECTORS
- const grVector & v1, // -- vector 1
- const grVector & v2 ); // -- vector 2
-
- friend double dot( // PERFORM DOT PRODUCT
- const grVector & v1, // -- vector one
- const grVector & v2 ); // -- vector to dot with
-
- friend grVector cross( // PERFORM CROSS PRODUCT (this X o)
- const grVector & v1, // -- vector one
- const grVector & v2 ); // -- vector to dot with
-
- double length( void ) const; // FIND THE LENGTH
-
- void normalize( void ); // NORMALIZE THE VECTOR
-
- void fixup( void ); // DIVIDE THROUGH BY h
-
- double x( void ) const { return _coords[ 0 ]; }
- double y( void ) const { return _coords[ 1 ]; }
- double z( void ) const { return _coords[ 2 ]; }
- double h( void ) const { return _coords[ 3 ]; }
-
- void x( double nx ) { _coords[ 0 ] = nx; }
- void y( double ny ) { _coords[ 1 ] = ny; }
- void z( double nz ) { _coords[ 2 ] = nz; }
- void h( double nh ) { _coords[ 3 ] = nh; }
-
- public:
-
- double _coords[ 4 ]; // x, y, z, h
- };
-
- class grPoint3 // REPRESENT POINT FOR OPERATIONS
- {
- public:
-
- grPoint3(); // DEFAULT CTOR
-
- grPoint3( // BUILD FROM COORDINATES
- double x, double y, // -- x, y location
- double z, // -- z value
- double h = 1.0 ); // -- homogoneous scaling factor
-
- friend grPoint3 operator *( // MULTIPLY BY SCALAR
- double s, // -- scalar value
- const grPoint3 & vec ); // -- vector to multiply
-
- friend grPoint3 operator +( // ADD VECTOR TO POINT
- const grPoint3 & p1, // -- point 1
- const grVector & v1 ); // -- vector 1
-
- friend grVector operator -( // SUBTRACT POINTS, GIVING VECTOR
- const grPoint3 & p1, // -- point 1
- const grPoint3 & p2 ); // -- point 2
-
- void fixup( void ); // DIVIDE THROUGH BY h
-
- double x( void ) const { return _coords[ 0 ]; }
- double y( void ) const { return _coords[ 1 ]; }
- double z( void ) const { return _coords[ 2 ]; }
- double h( void ) const { return _coords[ 3 ]; }
-
- void x( double nx ) { _coords[ 0 ] = nx; }
- void y( double ny ) { _coords[ 1 ] = ny; }
- void z( double nz ) { _coords[ 2 ] = nz; }
- void h( double nh ) { _coords[ 3 ] = nh; }
-
- public:
-
- double _coords[ 4 ]; // x, y, z, h
- };
-
- const grPoint3 grPoint3Origin(0,0,0);
-
- #endif // _GRVECTOR_H //
-