OpenCOVER
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
14namespace vrui
15{
16
17class OPENVRUIEXPORT vruiVec
18{
19
20public:
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
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
89vruiVec operator-(const vruiVec &first, const vruiVec &second);
90}
91#endif
collaborative interface manager
Definition: coVRCommunication.h:41
vruiVec operator-(const vruiVec &first, const vruiVec &second)
Definition: vruiVec.h:18
vruiVec & normalize()
Definition: vruiVec.h:66
vruiVec(const vruiVec &second)
Definition: vruiVec.h:44
double & operator[](int index) const
Definition: vruiVec.h:61
int size
Definition: vruiVec.h:85
double * vec
Definition: vruiVec.h:86
vruiVec(double x, double y, double z, double w)
Definition: vruiVec.h:29
double & operator[](int index)
Definition: vruiVec.h:56
vruiVec(int size)
Definition: vruiVec.h:38
vruiVec(double x, double y, double z)
Definition: vruiVec.h:21