CMSDK 2.0.1
Cross-platform C++ base library and SDK for the Psyclone AIOS platform
Loading...
Searching...
No Matches
cmlabs::Vector3D Class Reference

3D vector with dot/cross products, projection and angle math. More...

#include <MathClasses.h>

Public Member Functions

 Vector3D ()
 Zero vector.
 Vector3D (double x, double y, double z)
 From components.
virtual ~Vector3D ()
double operator[] (int n) const
 Component access: 0=x, 1=y, 2=z.
bool operator== (const Vector3D &v) const
 Component equality.
Vector3D operator- (const Vector3D &v) const
 Difference.
Vector3D operator+ (const Vector3D &v) const
 Sum.
double operator* (const Vector3D &v) const
 Dot product.
Vector3D operator- (double a) const
 Subtract scalar from each component.
Vector3D operator+ (double a) const
 Add scalar to each component.
Vector3D operator* (double a) const
 Scale.
const Vector3Doperator-= (const Vector3D &v)
 In-place subtract.
const Vector3Doperator+= (const Vector3D &v)
 In-place add.
const Vector3Doperator-= (double a)
 In-place scalar subtract.
const Vector3Doperator+= (double a)
 In-place scalar add.
const Vector3Doperator*= (double a)
 In-place scale.
double getX () const
double getY () const
double getZ () const
bool set (const PointFloat &p1, const PointFloat &p2)
 Set as p2-p1.
bool set (double x1, double y1, double z1, double x2, double y2, double z2)
 Set as the difference of two coordinate triples.
bool set (double x, double y, double z)
 Set components.
bool setX (double v)
 Set x.
bool setY (double v)
 Set y.
bool setZ (double v)
 Set z.
double length () const
Vector3D product (const Vector3D &v) const
 Cross product with v.
bool isOrthogonalWith (const Vector3D &v) const
bool isParallelWith (const Vector3D &v) const
Vector3D getProjectionOn (const Vector3D &v) const
Vector3D getUnitVector () const
double getAngle (const Vector3D &v) const
double getArea (const Vector3D &v) const
std::string print ()
 Human-readable representation for debugging.

Public Attributes

double x
 X component.
double y
 Y component.
double z
 Z component.

Detailed Description

3D vector with dot/cross products, projection and angle math.

operator* between vectors is the dot product; use product() for the cross product. Angles are radians. Follows the same conventions as Vector2D.

using namespace cmlabs;
Vector3D a(1, 0, 0), b(0, 1, 0);
double dot = a * b; // 0
Vector3D n = a.product(b); // cross product: (0,0,1)
double ang = a.getAngle(b); // pi/2
Vector3D u = Vector3D(2, 2, 1).getUnitVector();
Vector3D()
Zero vector.

Definition at line 725 of file MathClasses.h.

Constructor & Destructor Documentation

◆ Vector3D() [1/2]

◆ Vector3D() [2/2]

cmlabs::Vector3D::Vector3D ( double x,
double y,
double z )

From components.

Definition at line 1117 of file MathClasses.cpp.

References x, y, and z.

◆ ~Vector3D()

cmlabs::Vector3D::~Vector3D ( )
virtual

Definition at line 1118 of file MathClasses.cpp.

Member Function Documentation

◆ getAngle()

double cmlabs::Vector3D::getAngle ( const Vector3D & v) const
Returns
Angle to v in radians.

Definition at line 1269 of file MathClasses.cpp.

References length(), and Vector3D().

◆ getArea()

double cmlabs::Vector3D::getArea ( const Vector3D & v) const
Returns
Area of the parallelogram spanned with v.

Definition at line 1276 of file MathClasses.cpp.

References length(), product(), and Vector3D().

◆ getProjectionOn()

Vector3D cmlabs::Vector3D::getProjectionOn ( const Vector3D & v) const
Returns
Orthogonal projection of this vector onto v.

Definition at line 1260 of file MathClasses.cpp.

References getUnitVector(), and Vector3D().

Referenced by cmlabs::MathClasses_UnitTest().

◆ getUnitVector()

Vector3D cmlabs::Vector3D::getUnitVector ( ) const
Returns
Normalized copy.

Definition at line 1265 of file MathClasses.cpp.

References length(), and Vector3D().

Referenced by getProjectionOn(), and cmlabs::MathClasses_UnitTest().

◆ getX()

double cmlabs::Vector3D::getX ( ) const
Returns
x.

Definition at line 1220 of file MathClasses.cpp.

References x.

◆ getY()

double cmlabs::Vector3D::getY ( ) const
Returns
y.

Definition at line 1221 of file MathClasses.cpp.

References y.

◆ getZ()

double cmlabs::Vector3D::getZ ( ) const
Returns
z.

Definition at line 1222 of file MathClasses.cpp.

References z.

◆ isOrthogonalWith()

bool cmlabs::Vector3D::isOrthogonalWith ( const Vector3D & v) const
Returns
true when the dot product is (approximately) zero.

Definition at line 1252 of file MathClasses.cpp.

References Vector3D().

◆ isParallelWith()

bool cmlabs::Vector3D::isParallelWith ( const Vector3D & v) const
Returns
true when the cross product is (approximately) zero.

Definition at line 1256 of file MathClasses.cpp.

References length(), product(), and Vector3D().

◆ length()

double cmlabs::Vector3D::length ( ) const
Returns
Euclidean length.

Definition at line 1241 of file MathClasses.cpp.

References x, y, and z.

Referenced by getAngle(), getArea(), getUnitVector(), isParallelWith(), and cmlabs::MathClasses_UnitTest().

◆ operator*() [1/2]

double cmlabs::Vector3D::operator* ( const Vector3D & v) const

Dot product.

Definition at line 1155 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator*() [2/2]

Vector3D cmlabs::Vector3D::operator* ( double a) const

Scale.

Definition at line 1175 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator*=()

const Vector3D & cmlabs::Vector3D::operator*= ( double a)

In-place scale.

Definition at line 1211 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator+() [1/2]

Vector3D cmlabs::Vector3D::operator+ ( const Vector3D & v) const

Sum.

Definition at line 1147 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator+() [2/2]

Vector3D cmlabs::Vector3D::operator+ ( double a) const

Add scalar to each component.

Definition at line 1167 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator+=() [1/2]

const Vector3D & cmlabs::Vector3D::operator+= ( const Vector3D & v)

In-place add.

Definition at line 1190 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator+=() [2/2]

const Vector3D & cmlabs::Vector3D::operator+= ( double a)

In-place scalar add.

Definition at line 1204 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator-() [1/2]

Vector3D cmlabs::Vector3D::operator- ( const Vector3D & v) const

Difference.

Definition at line 1139 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator-() [2/2]

Vector3D cmlabs::Vector3D::operator- ( double a) const

Subtract scalar from each component.

Definition at line 1159 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator-=() [1/2]

const Vector3D & cmlabs::Vector3D::operator-= ( const Vector3D & v)

In-place subtract.

Definition at line 1183 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator-=() [2/2]

const Vector3D & cmlabs::Vector3D::operator-= ( double a)

In-place scalar subtract.

Definition at line 1197 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator==()

bool cmlabs::Vector3D::operator== ( const Vector3D & v) const

Component equality.

Definition at line 1132 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

◆ operator[]()

double cmlabs::Vector3D::operator[] ( int n) const

Component access: 0=x, 1=y, 2=z.

Definition at line 1120 of file MathClasses.cpp.

References x, y, and z.

◆ print()

std::string cmlabs::Vector3D::print ( )

Human-readable representation for debugging.

Definition at line 1237 of file MathClasses.cpp.

References cmlabs::utils::StringFormat(), x, y, and z.

◆ product()

Vector3D cmlabs::Vector3D::product ( const Vector3D & v) const

Cross product with v.

Definition at line 1245 of file MathClasses.cpp.

References Vector3D(), x, y, and z.

Referenced by getArea(), isParallelWith(), and cmlabs::MathClasses_UnitTest().

◆ set() [1/3]

bool cmlabs::Vector3D::set ( const PointFloat & p1,
const PointFloat & p2 )

Set as p2-p1.

Returns
true.

Definition at line 1224 of file MathClasses.cpp.

References set(), cmlabs::PointFloat::x, cmlabs::PointFloat::y, and cmlabs::PointFloat::z.

Referenced by set(), and set().

◆ set() [2/3]

bool cmlabs::Vector3D::set ( double x,
double y,
double z )

Set components.

Returns
true.

Definition at line 1232 of file MathClasses.cpp.

References x, y, and z.

◆ set() [3/3]

bool cmlabs::Vector3D::set ( double x1,
double y1,
double z1,
double x2,
double y2,
double z2 )

Set as the difference of two coordinate triples.

Returns
true.

Definition at line 1228 of file MathClasses.cpp.

References set().

◆ setX()

bool cmlabs::Vector3D::setX ( double v)

Set x.

Returns
true.

Definition at line 1233 of file MathClasses.cpp.

References x.

◆ setY()

bool cmlabs::Vector3D::setY ( double v)

Set y.

Returns
true.

Definition at line 1234 of file MathClasses.cpp.

References y.

◆ setZ()

bool cmlabs::Vector3D::setZ ( double v)

Set z.

Returns
true.

Definition at line 1235 of file MathClasses.cpp.

References z.

Member Data Documentation

◆ x

◆ y

◆ z


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