Go to the documentation of this file.
43 #define _USE_MATH_DEFINES
44 #define _CRT_SECURE_NO_DEPRECATE 1
52 #include <OpenMEEG_Export.h>
69 inline Vect3(
const double& xx,
const double& yy,
const double& zz) { m[0] = xx; m[1] = yy; m[2] = zz; }
70 inline Vect3(
const double& a) { std::fill(&m[0], &m[3], a); }
74 std::copy(&v.
m[0], &v.
m[3], &m[0]);
84 inline double&
x() {
return m[0]; }
85 inline const double&
x()
const {
return m[0]; }
87 inline double&
y() {
return m[1]; }
88 inline const double&
y()
const {
return m[1]; }
90 inline double&
z() {
return m[2]; }
91 inline const double&
z()
const {
return m[2]; }
94 inline double operator<(
const Vect3& v)
const {
return ((m[0] != v.
x())?(m[0] < v.
x()):((m[1] != v.
y())? (m[1] < v.
y()):(m[2] < v.
z()))); }
96 inline double norm()
const {
return sqrt(norm2()); }
97 inline double norm2()
const {
return m[0]*m[0]+m[1]*m[1]+m[2]*m[2]; }
99 inline bool operator==(
const Vect3& v )
const {
return (m[0]==v.
x() && m[1]==v.
y() && m[2]==v.
z()); }
100 inline bool operator!=(
const Vect3& v )
const {
return (m[0]!=v.
x() || m[1]!=v.
y() || m[2]!=v.
z()); }
104 inline void operator*=(
const double& d) { m[0] *= d; m[1] *= d; m[2] *= d; }
105 inline void operator/=(
const double& d) { operator*=(1.0/d); }
107 inline void multadd(
const double& d,
const Vect3& v) {m[0] += d*v.
x(); m[1] += d*v.
y(); m[2] += d*v.
z();}
115 inline double operator() (
const int i)
const {
116 om_assert(i>=0 && i<3);
121 om_assert(i>=0 && i<3);
128 return (*
this)*(y2^y3);
133 const Vect3 Y1 = v1 - *
this;
134 const Vect3 Y2 = v2 - *
this;
135 const Vect3 Y3 = v3 - *
this;
136 const double y1 = Y1.
norm();
137 const double y2 = Y2.
norm();
138 const double y3 = Y3.
norm();
139 const double d = Y1*(Y2^Y3);
140 return 2.*atan2(d, (y1*y2*y3+y1*(Y2*Y3)+y2*(Y3*Y1)+y3*(Y1*Y2)));
144 *
this /= (*this).norm();
154 return is >> v.
x() >> v.
y() >> v.
z();
158 return os << v.
x() <<
' ' << v.
y() <<
' ' << v.
z() ;
double operator*(const Vect3 &v) const
void operator+=(const Vect3 &v)
double solangl(const Vect3 &v1, const Vect3 &v2, const Vect3 &v3) const
Vect3 operator^(const Vect3 &v) const
std::vector< Normal > Normals
void operator-=(const Vect3 &v)
bool operator==(const Vect3 &v) const
Vect3 operator-(const Vect3 &v) const
double det(const Vect3 &y2, const Vect3 &y3) const
void operator*=(const double &d)
Vect3 operator*(const double &d) const
std::istream & operator>>(std::istream &is, Conductivity< REP > &m)
double operator<(const Vect3 &v) const
bool operator!=(const Vect3 &v) const
Vect3 operator/(const double &d) const
double & operator()(const int i)
void operator/=(const double &d)
Vect3(const double &xx, const double &yy, const double &zz)
std::ostream & operator<<(std::ostream &os, const Conductivity< REP > &m)
void multadd(const double &d, const Vect3 &v)
double m[3]
Coordinates of the vector.
Vect3 operator+(const Vect3 &v) const
Vect3 & operator=(const Vect3 &v)
Vect3 operator*(const double &d, const Vect3 &v)