home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / VECUTIL.HPP < prev    next >
C/C++ Source or Header  |  1991-06-02  |  2KB  |  51 lines

  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4.  
  5.  
  6. void vecerror(char* s);
  7.  
  8.  
  9. int inline MIN(int x,int y) { if (x<y) return x; else return y; }
  10. int inline MAX(int x,int y) { if (x>y) return x; else return y; }
  11. double inline MIN(double x,double y) { if (x<y) return x; else return y; }
  12. double inline MAX(double x,double y) { if (x>y) return x; else return y; }
  13.  
  14.  
  15. //===========================================================================
  16. class Vec {                            //multi-sizensional point
  17. private:                               //enforce privacy
  18.   int siz;                             //number of sizensions
  19.   double* x;                           //coordinates
  20.   int loadcoord;                       //currently loading coordinates
  21. public:                                //this is the user portion
  22. #define DEF_SIZ 3
  23.   Vec();                               //constructor, 3d
  24.   Vec(int n);                          //allows more than 3d
  25.   ~Vec();                              //destructor
  26.   void Fill(double val=0.0);           //fill with value
  27.   void Show(void);                     //write out
  28.   double& operator [](int i) {         //element of
  29.     if ((i<0)||(i>=siz)) vecerror("vector index range");  //check index
  30.     return x[i];                       //giv'm da val
  31.   }   //Vec::[](double)
  32.   void operator =(Vec& v);             //assignment operator
  33.   void operator =(double a);           //assignment operator, fill
  34.   Vec& operator +=(Vec& v);            //add to
  35.   Vec& operator -=(Vec& v);            //subtract from
  36.   Vec& operator *=(double a);          //scalar product
  37.   Vec& operator /=(double a);          //scalar quotient
  38.   Vec& operator <<(double a);          //put values into vector
  39.   double operator !(void);             //scalar length
  40.   friend Vec operator +(Vec& u,Vec& v);      //vector addition
  41.   friend Vec operator -(Vec& u,Vec& v);      //vector subtraction
  42.   friend double operator *(Vec& u,Vec& v);   //inner (dot) product
  43.   friend Vec operator *(Vec& u,double a);    //scalar product
  44.   friend Vec operator *(double a,Vec& u) { return u*a; }  //scalar product
  45.   friend double operator >>(Vec& u,Vec& v);  //get angle between vectors
  46.  
  47.   friend ostream& operator<<(ostream& out,Vec& v);  //for cout use
  48. };   //class Vec
  49.  
  50.  
  51.