Kindfield
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Friends Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Friends | List of all members
Vector3 Class Reference

Simple 3D vector class with focus on performance and readability. More...

#include <vector3.h>

Public Member Functions

 Vector3 ()
 
 Vector3 (double x, double y, double z)
 
 Vector3 (arma::rowvec armaVector)
 
void zeros ()
 
double x () const
 
double y () const
 
double z () const
 
uint size () const
 
double & operator() (const int component)
 
double & operator[] (const int component)
 
double operator() (const int component) const
 
double operator[] (const int component) const
 
Vector3operator= (const Vector3 &vector2)
 
Vector3operator+= (const Vector3 &vector2)
 
Vector3operator-= (const Vector3 &vector2)
 
Vector3operator*= (double value)
 
Vector3operator/= (double value)
 

Static Public Member Functions

static Vector3 ones ()
 
static Vector3 createZeros ()
 
static double dot (const Vector3 &vector1, const Vector3 &vector2)
 

Protected Attributes

double mem_local [3]
 

Friends

std::ostream & operator<< (std::ostream &out, const Vector3 &vector)
 
Vector3 operator+ (const Vector3 &vector1, const Vector3 &vector2)
 
Vector3 operator- (const Vector3 &vector1, const Vector3 &vector2)
 
Vector3 operator+ (const Vector3 &vector1)
 
Vector3 operator- (const Vector3 &vector1)
 
Vector3 operator* (const Vector3 &vector1, const Vector3 &vector2)
 Vector3::operator * returns the dot product of the two vectors. More...
 
bool operator== (const Vector3 &vector1, const Vector3 &vector2)
 
bool operator!= (const Vector3 &vector1, const Vector3 &vector2)
 
Vector3 operator* (const Vector3 &vector1, double value)
 
Vector3 operator* (double value, const Vector3 &vector1)
 
Vector3 operator/ (const Vector3 &vector1, double value)
 

Detailed Description

Simple 3D vector class with focus on performance and readability.

Definition at line 9 of file vector3.h.

Constructor & Destructor Documentation

Vector3::Vector3 ( )
inline

Definition at line 72 of file vector3.h.

73 {
74  mem_local[0] = 0;
75  mem_local[1] = 0;
76  mem_local[2] = 0;
77 }
Vector3::Vector3 ( double  x,
double  y,
double  z 
)
inline

Definition at line 79 of file vector3.h.

80 {
81  mem_local[0] = x;
82  mem_local[1] = y;
83  mem_local[2] = z;
84 }
Vector3::Vector3 ( arma::rowvec  armaVector)
inline

Definition at line 86 of file vector3.h.

87 {
88  mem_local[0] = armaVector(0);
89  mem_local[1] = armaVector(1);
90  mem_local[2] = armaVector(2);
91 }

Member Function Documentation

Vector3 Vector3::createZeros ( )
static

Definition at line 22 of file vector3.cpp.

23 {
24  return Vector3(0,0,0);
25 }
double Vector3::dot ( const Vector3 vector1,
const Vector3 vector2 
)
inlinestatic

Definition at line 219 of file vector3.h.

219  {
220  return (vector1.mem_local[0] * vector2.mem_local[0] + vector1.mem_local[1] * vector2.mem_local[1] + vector1.mem_local[2] * vector2.mem_local[2]);
221 }
Vector3 Vector3::ones ( )
static

Definition at line 16 of file vector3.cpp.

17 {
18  return Vector3(1,1,1);
19 }
double & Vector3::operator() ( const int  component)
inline

Definition at line 106 of file vector3.h.

107 {
108  return mem_local[component];
109 }
double Vector3::operator() ( const int  component) const
inline

Definition at line 117 of file vector3.h.

118 {
119  return mem_local[component];
120 }
Vector3 & Vector3::operator*= ( double  value)
inline

Definition at line 159 of file vector3.h.

160 {
161  this->mem_local[0] *= value;
162  this->mem_local[1] *= value;
163  this->mem_local[2] *= value;
164  return *this;
165 }
Vector3 & Vector3::operator+= ( const Vector3 vector2)
inline

Definition at line 151 of file vector3.h.

152 {
153  this->mem_local[0] += vector2.mem_local[0];
154  this->mem_local[1] += vector2.mem_local[1];
155  this->mem_local[2] += vector2.mem_local[2];
156  return *this;
157 }
Vector3 & Vector3::operator-= ( const Vector3 vector2)
inline

Definition at line 190 of file vector3.h.

191 {
192  this->mem_local[0] -= vector2.mem_local[0];
193  this->mem_local[1] -= vector2.mem_local[1];
194  this->mem_local[2] -= vector2.mem_local[2];
195  return *this;
196 }
Vector3 & Vector3::operator/= ( double  value)
inline

Definition at line 167 of file vector3.h.

168 {
169  this->mem_local[0] /= value;
170  this->mem_local[1] /= value;
171  this->mem_local[2] /= value;
172  return *this;
173 }
Vector3 & Vector3::operator= ( const Vector3 vector2)
inline

Definition at line 143 of file vector3.h.

144 {
145  this->mem_local[0] = vector2.mem_local[0];
146  this->mem_local[1] = vector2.mem_local[1];
147  this->mem_local[2] = vector2.mem_local[2];
148  return *this;
149 }
double & Vector3::operator[] ( const int  component)
inline

Definition at line 101 of file vector3.h.

102 {
103  return mem_local[component];
104 }
double Vector3::operator[] ( const int  component) const
inline

Definition at line 112 of file vector3.h.

113 {
114  return mem_local[component];
115 }
uint Vector3::size ( ) const
inline

Definition at line 128 of file vector3.h.

128  {
129  return 3;
130 }
double Vector3::x ( ) const
inline

Definition at line 236 of file vector3.h.

236  {
237  return mem_local[0];
238 }
double Vector3::y ( ) const
inline

Definition at line 239 of file vector3.h.

239  {
240  return mem_local[1];
241 }
double Vector3::z ( ) const
inline

Definition at line 242 of file vector3.h.

242  {
243  return mem_local[2];
244 }
void Vector3::zeros ( )
inline

Definition at line 122 of file vector3.h.

122  {
123  mem_local[0] = 0;
124  mem_local[1] = 0;
125  mem_local[2] = 0;
126 }

Friends And Related Function Documentation

bool operator!= ( const Vector3 vector1,
const Vector3 vector2 
)
friend

Definition at line 231 of file vector3.h.

232 {
233  return !(vector1 == vector2);
234 }
Vector3 operator* ( const Vector3 vector1,
const Vector3 vector2 
)
friend

Vector3::operator * returns the dot product of the two vectors.

Parameters
vector1
vector2
Returns

Definition at line 214 of file vector3.h.

215 {
216  return Vector3(vector1.mem_local[0] * vector2.mem_local[0], vector1.mem_local[1] * vector2.mem_local[1], vector1.mem_local[2] * vector2.mem_local[2]);
217 }
Vector3 operator* ( const Vector3 vector1,
double  value 
)
friend

Definition at line 175 of file vector3.h.

176 {
177  return Vector3(vector1.mem_local[0]*value, vector1.mem_local[1]*value, vector1.mem_local[2]*value);
178 }
Vector3 operator* ( double  value,
const Vector3 vector1 
)
friend

Definition at line 180 of file vector3.h.

181 {
182  return Vector3(vector1.mem_local[0]*value, vector1.mem_local[1]*value, vector1.mem_local[2]*value);
183 }
Vector3 operator+ ( const Vector3 vector1,
const Vector3 vector2 
)
friend

Definition at line 133 of file vector3.h.

134 {
135  return Vector3(vector1.mem_local[0] + vector2.mem_local[0], vector1.mem_local[1] + vector2.mem_local[1], vector1.mem_local[2] + vector2.mem_local[2]);
136 }
Vector3 operator+ ( const Vector3 vector1)
friend

Definition at line 198 of file vector3.h.

199 {
200  return Vector3(vector1.mem_local[0], vector1.mem_local[1], vector1.mem_local[2]);
201 }
Vector3 operator- ( const Vector3 vector1,
const Vector3 vector2 
)
friend

Definition at line 138 of file vector3.h.

139 {
140  return Vector3(vector1.mem_local[0] - vector2.mem_local[0], vector1.mem_local[1] - vector2.mem_local[1], vector1.mem_local[2] - vector2.mem_local[2]);
141 }
Vector3 operator- ( const Vector3 vector1)
friend

Definition at line 203 of file vector3.h.

204 {
205  return Vector3(-vector1.mem_local[0], -vector1.mem_local[1], -vector1.mem_local[2]);
206 }
Vector3 operator/ ( const Vector3 vector1,
double  value 
)
friend

Definition at line 185 of file vector3.h.

186 {
187  return Vector3(vector1.mem_local[0]/value, vector1.mem_local[1]/value, vector1.mem_local[2]/value);
188 }
std::ostream& operator<< ( std::ostream &  out,
const Vector3 vector 
)
friend

Definition at line 10 of file vector3.cpp.

11 {
12  out << vector.mem_local[0] << ", " << vector.mem_local[1] << ", " << vector.mem_local[2];
13  return out;
14 }
bool operator== ( const Vector3 vector1,
const Vector3 vector2 
)
friend

Definition at line 224 of file vector3.h.

225 {
226  return ((vector1.mem_local[0] == vector2.mem_local[0]) &&
227  (vector1.mem_local[1] == vector2.mem_local[1]) &&
228  (vector1.mem_local[2] == vector2.mem_local[2]));
229 }

Member Data Documentation

double Vector3::mem_local[3]
protected

Definition at line 12 of file vector3.h.


The documentation for this class was generated from the following files: