]> Shamusworld >> Repos - architektonas/blob - src/vector.h
Major refactor of Architektonas: Jettisoning old cruft.
[architektonas] / src / vector.h
1 //\r
2 // vector.h (Last modified: 6/28/2001)\r
3 //\r
4 // Various structures used for 3 dimensional imaging\r
5 //\r
6 // by James L. Hammons\r
7 // (C) 2001 Underground Software\r
8 //\r
9 \r
10 #ifndef __VECTOR_H__\r
11 #define __VECTOR_H__\r
12 \r
13 // What we'll do here is create the vector type and use typedef to alias Point to it. Yeah, that's it.\r
14 \r
15 class Vector\r
16 {\r
17         public:\r
18                 Vector(double xx = 0, double yy = 0, double zz = 0);\r
19                 Vector operator=(Vector const v);\r
20                 Vector operator+(Vector const v);\r
21                 Vector operator-(Vector const v);\r
22                 Vector operator-(void);                                 // Unary negation\r
23                 Vector operator*(double const v);               // Vector times constant (double)\r
24                 Vector operator*(float const v);                // Vector times constant (float)\r
25                 Vector operator/(double const v);               // Vector divided by constant (double)\r
26                 Vector operator/(float const v);                // Vector divided by constant (float)\r
27                 Vector operator*(Vector const v);               // Vector product\r
28                 double Dot(Vector const v);                             // Dot product\r
29 \r
30                 Vector& operator*=(double const v);             // Vector times constant self-assignment\r
31                 Vector& operator/=(double const v);             // Vector divided by constant self-assignment\r
32                 Vector& operator+=(Vector const v);             // Vector plus Vector self-assignment\r
33                 Vector& operator+=(double const v);             // Vector plus constant self-assignment\r
34 \r
35                 Vector Unit(void);\r
36                 double Magnitude(void);\r
37                 double Angle(void);\r
38                 bool isZero(double epsilon = 1e-6);\r
39 \r
40                 // Class methods\r
41 \r
42                 static double Dot(Vector v1, Vector v2);\r
43 \r
44         public:\r
45                 double x, y, z;\r
46 };\r
47 \r
48 typedef Vector Point;\r
49 \r
50 #endif  // __VECTOR_H__\r