OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
Vector3D.cpp
Go to the documentation of this file.
1// ------------------------------------------------------------------------
2// $RCSfile: Vector3D.cpp,v $
3// ------------------------------------------------------------------------
4// $Revision: 1.1.1.1 $
5// ------------------------------------------------------------------------
6// Copyright: see Copyright.readme
7// ------------------------------------------------------------------------
8//
9// Class: Vector3D
10// Vector3D represents an 3-dimension vector.
11//
12// ------------------------------------------------------------------------
13// Class category: BeamlineGeometry
14// ------------------------------------------------------------------------
15//
16// $Date: 2000/03/27 09:32:34 $
17// $Author: fci $
18//
19// ------------------------------------------------------------------------
20
22
23// Class Vector3D
24// ------------------------------------------------------------------------
25
26Vector3D::Vector3D(double x, double y, double z) {
27 v[0] = x;
28 v[1] = y;
29 v[2] = z;
30}
31
33 v[0] += rhs.v[0];
34 v[1] += rhs.v[1];
35 v[2] += rhs.v[2];
36 return *this;
37}
38
40 v[0] -= rhs.v[0];
41 v[1] -= rhs.v[1];
42 v[2] -= rhs.v[2];
43 return *this;
44}
45
47 v[0] *= rhs;
48 v[1] *= rhs;
49 v[2] *= rhs;
50 return *this;
51}
52
53bool Vector3D::operator==(const Vector3D& rhs) const {
54 return (v[0] == rhs.v[0]) && (v[1] == rhs.v[1]) && (v[0] == rhs.v[1]);
55}
56
57bool Vector3D::operator!=(const Vector3D& rhs) const {
58 return (v[0] != rhs.v[0]) || (v[1] != rhs.v[1]) || (v[0] != rhs.v[1]);
59}
60
61Vector3D Vector3D::operator-() const { return Vector3D(-v[0], -v[1], -v[2]); }
62
63Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs) {
64 return Vector3D(lhs(0) + rhs(0), lhs(1) + rhs(1), lhs(2) + rhs(2));
65}
66
67Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs) {
68 return Vector3D(lhs(0) - rhs(0), lhs(1) - rhs(1), lhs(2) - rhs(2));
69}
70
71Vector3D operator*(const Vector3D& lhs, double rhs) {
72 return Vector3D(lhs(0) * rhs, lhs(1) * rhs, lhs(2) * rhs);
73}
74
75Vector3D operator*(double lhs, const Vector3D& rhs) {
76 return Vector3D(lhs * rhs(0), lhs * rhs(1), lhs * rhs(2));
77}
78
79void Vector3D::clear() { v[0] = v[1] = v[2] = 0.0; }
80
81void Vector3D::getComponents(double& x, double& y, double& z) const {
82 x = v[0];
83 y = v[1];
84 z = v[2];
85}
86
87bool Vector3D::isZero() const { return v[0] == 0.0 && v[1] == 0.0 && v[2] == 0.0; }
88
89Vector3D cross(const Vector3D& lhs, const Vector3D& rhs) {
90 return Vector3D(
91 lhs(1) * rhs(2) - lhs(2) * rhs(1), lhs(2) * rhs(0) - lhs(0) * rhs(2),
92 lhs(0) * rhs(1) - lhs(1) * rhs(0));
93}
94
95double dot(const Vector3D& lhs, const Vector3D& rhs) {
96 return (lhs(0) * rhs(0) + lhs(1) * rhs(1) + lhs(2) * rhs(2));
97}
Vector3D cross(const Vector3D &lhs, const Vector3D &rhs)
Vector cross product.
Definition Vector3D.cpp:89
Vector3D operator+(const Vector3D &lhs, const Vector3D &rhs)
Add.
Definition Vector3D.cpp:63
Vector3D operator-(const Vector3D &lhs, const Vector3D &rhs)
Subtract.
Definition Vector3D.cpp:67
double dot(const Vector3D &lhs, const Vector3D &rhs)
Vector dot product.
Definition Vector3D.cpp:95
Vector3D operator*(const Vector3D &lhs, double rhs)
Multiply.
Definition Vector3D.cpp:71
A 3-dimension vector.
Definition Vector3D.h:30
Vector3D()
Default constructor.
Definition Vector3D.h:126
bool operator!=(const Vector3D &) const
Definition Vector3D.cpp:57
void clear()
Set to zero.
Definition Vector3D.cpp:79
Vector3D & operator-=(const Vector3D &vector)
Subtract and assign.
Definition Vector3D.cpp:39
Vector3D & operator*=(double factor)
Scale and assign.
Definition Vector3D.cpp:46
void getComponents(double &x, double &y, double &z) const
Get components.
Definition Vector3D.cpp:81
bool operator==(const Vector3D &) const
Definition Vector3D.cpp:53
Vector3D & operator+=(const Vector3D &vector)
Add and assign.
Definition Vector3D.cpp:32
bool isZero() const
Test for zero.
Definition Vector3D.cpp:87
double v[3]
Definition Vector3D.h:99
Vector3D operator-() const
Negative vector.
Definition Vector3D.cpp:61