OpenCOVER
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
vruiVec.h
Go to the documentation of this file.
1 /* This file is part of COVISE.
2 
3  You can use it under the terms of the GNU Lesser General Public License
4  version 2.1 or later, see lgpl-2.1.txt.
5 
6  * License: LGPL 2+ */
7 
8 #ifndef VRUI_VEC_H
9 #define VRUI_VEC_H
10 
11 #include <util/coTypes.h>
12 #include <math.h>
13 
14 namespace vrui
15 {
16 
17 class OPENVRUIEXPORT vruiVec
18 {
19 
20 public:
21  vruiVec(double x, double y, double z)
22  {
23  this->size = 3;
24  vec[0] = x;
25  vec[1] = y;
26  vec[2] = z;
27  }
28 
29  vruiVec(double x, double y, double z, double w)
30  {
31  this->size = 4;
32  vec[0] = x;
33  vec[1] = y;
34  vec[2] = z;
35  vec[3] = w;
36  }
37 
38  vruiVec(int size)
39  {
40  this->size = size;
41  this->vec = new double(size);
42  }
43 
44  vruiVec(const vruiVec &second)
45  {
46  this->size = second.size;
47  this->vec = new double(this->size);
48  for (int ctr = 0; ctr < this->size; ++ctr)
49  {
50  this->vec[ctr] = second.vec[ctr];
51  }
52  }
53 
54  ~vruiVec();
55 
56  double &operator[](int index)
57  {
58  return vec[index];
59  }
60 
61  double &operator[](int index) const
62  {
63  return vec[index];
64  }
65 
67  {
68 
69  double sum = 0.0;
70  for (int ctr = 0; ctr < this->size; ++ctr)
71  {
72  sum += vec[ctr] * vec[ctr];
73  }
74 
75  sum = sqrt(sum);
76 
77  for (int ctr = 0; ctr < this->size; ++ctr)
78  {
79  vec[ctr] /= sum;
80  }
81 
82  return *this;
83  }
84 
85  int size;
86  double *vec;
87 };
88 
89 vruiVec operator-(const vruiVec &first, const vruiVec &second);
90 }
91 #endif
vruiVec(int size)
Definition: vruiVec.h:38
vruiVec operator-(const vruiVec &first, const vruiVec &second)
vruiVec & normalize()
Definition: vruiVec.h:66
double & operator[](int index)
Definition: vruiVec.h:56
double * vec
Definition: vruiVec.h:86
Definition: vruiVec.h:17
double & operator[](int index) const
Definition: vruiVec.h:61
vruiVec(const vruiVec &second)
Definition: vruiVec.h:44
vruiVec(double x, double y, double z, double w)
Definition: vruiVec.h:29
int size
Definition: vruiVec.h:85
vruiVec(double x, double y, double z)
Definition: vruiVec.h:21