6#ifndef ACTIVE_GEOMETRY_VECTOR_3
7#define ACTIVE_GEOMETRY_VECTOR_3
9#include "Active/Geometry/Point.h"
26 using Unique = std::unique_ptr<Vector3>;
28 using Shared = std::shared_ptr<Vector3>;
30 using Option = std::optional<Vector3>;
44 Vector3(
double x,
double y,
double z = 0.0);
156 const double operator[] (
int row)
const {
return m_vector[row % 3]; }
161 operator Point()
const;
207 {
return (math::isZero(m_vector[0], prec) && math::isZero(m_vector[1], prec) && !math::isZero(m_vector[2], prec)); }
213 {
return ((!math::isZero(m_vector[0], prec) || !math::isZero(m_vector[1], prec)) && math::isZero(m_vector[2], prec)); }
249 std::array<double, 3> m_vector;
Class to represent a line.
Definition Line.h:21
A 3x3 matrix class.
Definition Matrix3x3.h:16
A 4x4 matrix class.
Definition Matrix4x4.h:14
A 1x3 vector class.
Definition Vector3.h:20
bool isZAxis(double prec=math::eps) const
Definition Vector3.h:206
bool isSameSense(const Vector3 &ref, double prec=math::eps) const
Definition Vector3.cpp:297
Vector3()
Definition Vector3.cpp:22
Vector3 & operator+=(const Vector3 &vect)
Definition Vector3.cpp:137
Vector3 vectorProduct(const Vector3 &ref) const
Definition Vector3.cpp:349
std::unique_ptr< Vector3 > Unique
Unique pointer.
Definition Vector3.h:26
double angleTo(const Vector3 &ref) const
Definition Vector3.cpp:400
Vector3 operator+(const Vector3 &vect) const
Definition Vector3.cpp:125
std::shared_ptr< Vector3 > Shared
Shared pointer.
Definition Vector3.h:28
bool isXyPlane(double prec=math::eps) const
Definition Vector3.h:212
bool isPerpendicularTo(const Vector3 &ref, double prec=math::eps) const
Definition Vector3.cpp:284
std::optional< Vector3 > Option
Optional.
Definition Vector3.h:30
bool isParallelTo(const Vector3 &ref, double prec=math::eps) const
Definition Vector3.cpp:271
virtual ~Vector3()=default
Vector3 operator*(double scale) const
Definition Vector3.cpp:178
Vector3 & operator=(const Point &source)
Definition Vector3.cpp:79
double magnitude() const
Definition Vector3.cpp:323
double modulus() const
Definition Vector3.h:235
double & operator[](int row)
Definition Vector3.h:150
double dotProduct(const Vector3 &ref) const
Definition Vector3.cpp:336
Vector3 & operator-=(const Vector3 &vect)
Definition Vector3.cpp:163
Vector3 & operator*=(double scale)
Definition Vector3.cpp:214
Vector3 normalised() const
Definition Vector3.cpp:361
Vector3 operator-(const Vector3 &vect) const
Definition Vector3.cpp:152
bool isEmpty(double prec=math::eps) const
Definition Vector3.cpp:313
double azimuthAngle() const
Definition Vector3.cpp:378
double altitudeAngle() const
Definition Vector3.cpp:388
constexpr double eps
Default length precision (0.01mm)
Definition MathFunctions.h:22