# CSIBCVector3Dd Class Reference

General purpose 3D vector class. More...

`#include <SIBCVector3Dd.h>`

List of all members.

## Public Member Functions
| CSIBCVector3Dd ()
| CSIBCVector3Dd (const double in_dX, const double in_dY, const double in_dZ)
| CSIBCVector3Dd (const double in_dXYZ[3])
| CSIBCVector3Dd (int in_nIndex, double in_dVal)
const double * | GetArray () const
double | GetX (void) const
double | GetY (void) const
double | GetZ (void) const
double | Get (const int in_nIndex) const
void | Get (double &out_dX, double &out_dY, double &out_dZ) const
double | GetMaxComponent (bool in_bInAbs=true) const
double | GetMinComponent (bool in_bInAbs=true) const
int | GetIndexOfMaxComponent (bool in_bInAbs=true) const
int | GetIndexOfMinComponent (bool in_bInAbs=true) const
CSIBCVector3Dd & | SetX (const double in_dVal)
CSIBCVector3Dd & | SetY (const double in_dVal)
CSIBCVector3Dd & | SetZ (const double in_dVal)
CSIBCVector3Dd & | Set (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Set (const int in_nIndex, const double in_dVal)
CSIBCVector3Dd & | Set (const double in_dX, const double in_dY, const double in_dZ)
CSIBCVector3Dd & | SetNull (void)
bool | IsNull (const double in_dEpsilon=PICO_EPS) const
CSIBCVector3Dd & | SetMinimal (bool in_bInAbs=true, const double in_dEpsilon=PICO_EPS)
CSIBCVector3Dd & | SetMinimal (const CSIBCVector3Dd &, bool in_bInAbs=true)
bool | operator== (const CSIBCVector3Dd &in_vct) const
bool | operator!= (const CSIBCVector3Dd &in_vct) const
CSIBCVector3Dd & | Negate (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Negate (void)
double | GetSquaredLength (void) const
double | GetLength (void) const
bool | SetLength (const double in_dLength)
bool | Normalize (void)
CSIBCVector3Dd & | Add (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Add (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
CSIBCVector3Dd & | Sub (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Sub (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
CSIBCVector3Dd & | Mul (const double in_dFactor)
CSIBCVector3Dd & | Mul (const double in_dFactor, const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Mul (const CSIBCVector3Dd &in_vct, const double in_dFactor)
CSIBCVector3Dd & | Mul (const CSIBCVector3Dd &in_vct, const CSIBCMatrix33d &in_mat)
CSIBCVector3Dd & | Mul (const CSIBCMatrix33d &in_mat)
CSIBCVector3Dd & | Mul (const CSIBCMatrix33d &in_mat, const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Mul (const CSIBCVector3Dd &in_vct, const CSIBCRotMatd &in_mat)
CSIBCVector3Dd & | Mul (const CSIBCRotMatd &in_mat, const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | Mul (const CSIBCVector3Dd &in_vct, const CSIBCXfoMatd &in_mat)
CSIBCVector3Dd & | Mul (const CSIBCVector3Dd &in_vct, const CSIBCMatrix44d &in_mat)
CSIBCVector3Dd & | Div (const double in_dFactor)
CSIBCVector3Dd & | Div (const CSIBCVector3Dd &in_vct, const double in_dFactor)
CSIBCVector3Dd & | MulComp (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
CSIBCVector3Dd & | MulComp (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | DivComp (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | DivComp (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
CSIBCVector3Dd & | SetCross (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | SetCross (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
bool | SetOrthogonal (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
bool | SetOrthoProj (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
bool | SetProjection (const CSIBCVector3Dd &in_vct)
CSIBCVector3Dd & | SetMirror (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
CSIBCVector3Dd & | SetMidpoint (const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
CSIBCVector3Dd & | SetMean (const CSIBCVector3Dd *in_vct, ULONG in_nbVct)
CSIBCVector3Dd & | LinearPositionInterpolate (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dT)
void | SetBounds (const CSIBCVector3Dd &in_pnt, CSIBCVector3Dd &io_min, CSIBCVector3Dd &io_max)
CSIBCVector3Dd & | Combine (const CSIBCVector3Dd &in_vct1, const double in_dS1, const CSIBCVector3Dd &in_vct2, const double in_dS2)
CSIBCVector3Dd & | BsplinePositionInterpolate (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const CSIBCVector3Dd &in_vct3, const CSIBCVector3Dd &in_vct4, const double in_dT)
CSIBCVector3Dd & | BsplineVectorInterpolate (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const CSIBCVector3Dd &in_vct3, const CSIBCVector3Dd &in_vct4, const double in_dT)
## Friends
bool | AreAlmostEqual (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dEpsilon=PICO_EPS)
double | GetDot (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
bool | AreOrthogonal (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dEpsilon=PICO_EPS)
bool | AreParallel (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dEpsilon=PICO_EPS)
double | GetDistance (const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
double | GetSquaredDistance (const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
void | GetOrthogonalBasis (const CSIBCVector3Dd &in_vct1, CSIBCVector3Dd &out_vct2, CSIBCVector3Dd &out_vct3)
void | GetOrthonormalBasis (CSIBCVector3Dd &io_vct1, CSIBCVector3Dd &out_vct2, CSIBCVector3Dd &out_vct3)
double | GetPntsAngle (const CSIBCVector3Dd &in_pntOrigin, const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
double | Get2DPntsAngleSigned (const CSIBCVector3Dd &in_pntOrigin, const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
double | GetPntsCosAngle (const CSIBCVector3Dd &in_pntOrigin, const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2)
double | GetVctsAngle (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dEpsilon=PICO_EPS)
double | Get2DVctsAngleSigned (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2)
double | GetVctsCosAngle (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const double in_dEpsilon=PICO_EPS)
int | Get2DPntSide (const CSIBCVector3Dd &in_pnt, const CSIBCVector3Dd &in_pntOrigin, const CSIBCVector3Dd &in_pntTip)
double | GetTriangleArea (const CSIBCVector3Dd &in_rPoint0, const CSIBCVector3Dd &in_rPoint1, const CSIBCVector3Dd &in_rPoint2)
bool | ArePntsCollinear (const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2, const CSIBCVector3Dd &in_pnt3, const double in_dEpsilon=PICO_EPS)
bool | AreVctsCoplanar (const CSIBCVector3Dd &in_vct1, const CSIBCVector3Dd &in_vct2, const CSIBCVector3Dd &in_vct3, const double in_dEpsilon=PICO_EPS)
bool | ArePntsCoplanar (const CSIBCVector3Dd &in_pnt1, const CSIBCVector3Dd &in_pnt2, const CSIBCVector3Dd &in_pnt3, const CSIBCVector3Dd &in_pnt4, const double in_dEpsilon=PICO_EPS)

## Detailed Description

General purpose 3D vector class.

Representation of a 3D vector, defining operations to access, modify and perform calculations on 3D vectors. This class uses double precision floating-point numbers for represent its data, and in its operations. There are seperate similar classes for 2D and 4D vectors, CSIBCVector2Dd and CSIBCVector4Dd, respectively, which also use double precision. There also exists a 3D vector class with an implicit W component, CSIBCVectorwd.

Furthermore, there is another set of vector classes which use single precision floating-point numbers, CSIBCVector2D, CSIBCVector3D and CSIBCVector4D for 2D, 3D and 4D vectors respectively. Quaternions represented as 4D vectors are also available in CSIBCQuaternion and CSIBCQuaterniond with single precision and double precision, repspectively.

## Constructor & Destructor Documentation

CSIBCVector3Dd | ( |  | ) |

Default Constructor. Constructs a new 3D vector.

CSIBCVector3Dd | ( | const double | in_dX,
|  | const double | in_dY,
|  | const double | in_dZ |
| ) |  |  |

Constructor. Constructs a new 3D vector, with `in_dX`, `in_dY` and `in_dZ` as the X, Y and Z component values, respectively.

Parameters:

  | in_dX | The value for the X component of the new vector.
  | in_dY | The value for the Y component of the new vector.
  | in_dZ | The value for the Z component of the new vector.

CSIBCVector3Dd | ( | const double | in_dXYZ[3] | ) |

Constructor. Sets the new vector to have the X, Y and Z values contained in the array `in_dXYZ`.

Parameters:

  | in_dXY | Array containing the X, Y and Z values for the new vector.

CSIBCVector3Dd | ( | int | in_nIndex,
|  | double | in_dVal |
| ) |  |  |

Constructor. Sets the component determined by `in_nIndex` to `in_dVal`, and the other component to zero.

Parameters:

  | in_nIndex | Index of the component to set to `in_dVal`. (0 == X, 1 == Y).

## Member Function Documentation

const double* GetArray | ( |  | ) | const

Returns an array containing the X, Y and Z components of the vector. Note that the pointer obtained from this call should not be freed. Any modification to the values in the array results in a direct modification of this object.

Returns:
  const double* Array containing the X, Y and Z components of this vector.

See also:
  CSIBCVector3Dd::Get

double GetX | ( | void |  | ) | const

Gets the X component of this vector.

Returns:
  Value of the X component of this vector.

See also:
  CSIBCVector3Dd::GetY

  CSIBCVector3Dd::GetZ

  CSIBCVector3Dd::SetX

  CSIBCVector3Dd::Get

double GetY | ( | void |  | ) | const

Gets the Y component of this vector.

Returns:
  Value of the Y component of this vector.

See also:
  CSIBCVector3Dd::GetX

  CSIBCVector3Dd::GetZ

  CSIBCVector3Dd::SetY

  CSIBCVector3Dd::Get

double GetZ | ( | void |  | ) | const

Gets the Z component of this vector.

Returns:
  Value of the Z component of this vector.

See also:
  CSIBCVector3Dd::GetX

  CSIBCVector3Dd::GetY

  CSIBCVector3Dd::SetZ

  CSIBCVector3Dd::Get

double Get | ( | const int | in_nIndex | ) | const

Gets the value of the component specified by `in_nIndex`.

Parameters:

  | in_nIndex | Index of the component value to get (0 == X, 1 == Y, 2 == Z).

Returns:
  double Value of the component specified by `in_nIndex`.

See also:
  CSIBCVector3Dd::GetX

  CSIBCVector3Dd::GetY

  CSIBCVector3Dd::GetZ

  CSIBCVector3Dd::Set

void Get | ( | double & | out_dX,
|  | double & | out_dY,
|  | double & | out_dZ |
| ) |  |  | const

Gets the values of the X, Y and Z components of this vector.

Parameters:

  | out_dX | Receives the value of the X component
  | out_dY | Receives the value of the Y component
  | out_dZ | Receives the value of the Z component

See also:
  CSIBCVector3Dd::GetX

  CSIBCVector3Dd::GetY

  CSIBCVector3Dd::GetZ

  CSIBCVector3Dd::Set

double GetMaxComponent | ( | bool | in_bInAbs = `true` | ) | const

Gets the value of largest component of the vector.

Parameters:

  | in_bInAbs | true if comparisons should be made with absolute values, false if comparisons should be made without absolute values. Defaults to true.

Returns:
  double The value (or absolute value if `in_bInAbs` is true) of the largest component of the vector.

See also:
  CSIBCVector3Dd::GetIndexOfMaxComponent

  CSIBCVector3Dd::GetMinComponent

double GetMinComponent | ( | bool | in_bInAbs = `true` | ) | const

Gets the value of smallest component of the vector.

Parameters:

  | in_bInAbs | true if comparisons should be made with absolute values, false if comparisons should be made without absolute values. Defaults to true.

Returns:
  double The value (or absolute value if `in_bInAbs` is true) of the smallest component of the vector.

See also:
  CSIBCVector3Dd::GetIndexOfMinComponent

  CSIBCVector3Dd::GetMaxComponent

int GetIndexOfMaxComponent | ( | bool | in_bInAbs = `true` | ) | const

Gets the index of the largest component of the vector.

Parameters:

  | in_bInAbs | true if comparisons should be made with absolute values, false if comparisons should be made without absolute values. Defaults to true.

Returns:
  int Index of the largest component of the vector (0 == X, 1 == Y, 2 == Z).

See also:
  CSIBCVector3Dd::GetMaxComponent

  CSIBCVector3Dd::GetIndexOfMinComponent

int GetIndexOfMinComponent | ( | bool | in_bInAbs = `true` | ) | const

Gets the index of the smallest component of the vector.

Parameters:

  | in_bInAbs | true if comparisons should be made with absolute values, false if comparisons should be made without absolute values. Defaults to true.

Returns:
  int Index of the smallest component of the vector (0 == X, 1 == Y, 2 == Z).

See also:
  CSIBCVector3Dd::GetMinComponent

  CSIBCVector3Dd::GetIndexOfMaxComponent

CSIBCVector3Dd& SetX | ( | const double | in_dVal | ) |

Sets the value of the X component of this vector.

Parameters:

  | in_dVal | The new value of the X component of this vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetY

  CSIBCVector3Dd::SetZ

  CSIBCVector3Dd::Set

  CSIBCVector3Dd::GetX

CSIBCVector3Dd& SetY | ( | const double | in_dVal | ) |

Sets the value of the Y component of this vector.

Parameters:

  | in_dVal | The new value of the Y component of this vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetX

  CSIBCVector3Dd::SetZ

  CSIBCVector3Dd::Set

  CSIBCVector3Dd::GetY

CSIBCVector3Dd& SetZ | ( | const double | in_dVal | ) |

Sets the value of the Z component of this vector.

Parameters:

  | in_dVal | The new value of the Z component of this vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetX

  CSIBCVector3Dd::SetY

  CSIBCVector3Dd::Set

  CSIBCVector3Dd::GetZ

CSIBCVector3Dd& Set | ( | const CSIBCVector3Dd & | in_vct | ) |

Sets the value of this vector to the value of `in_vct`.

Parameters:

  | in_vct | Vector to set this vector equal to.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Set

  CSIBCVector3Dd::SetX

  CSIBCVector3Dd::SetY

  CSIBCVector3Dd::SetZ

  CSIBCVector3Dd::Get

CSIBCVector3Dd& Set | ( | const int | in_nIndex,
|  | const double | in_dVal |
| ) |  |  |

Sets the component given by `in_nIndex` to `in_dVal`.

Parameters:

  | in_nIndex | The index of the component to set (0 == X, 1 == Y, 2 == Z).
  | in_dVal | The value to set the component to.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Set

  CSIBCVector3Dd::Get

CSIBCVector3Dd& Set | ( | const double | in_dX,
|  | const double | in_dY,
|  | const double | in_dZ |
| ) |  |  |

Sets the X, Y and Z components of the vector.

Parameters:

  | in_dX | The value for the X component of the vector.
  | in_dY | The value for the Y component of the vector.
  | in_dZ | The value for the Z component of the vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Set

  CSIBCVector3Dd::GetX

  CSIBCVector3Dd::GetY

  CSIBCVector3Dd::GetZ

  CSIBCVector3Dd::Get

CSIBCVector3Dd& SetNull | ( | void |  | ) |

Sets all the components of this vector to zero.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::IsNull

  CSIBCVector3Dd::Set

bool IsNull | ( | const double | in_dEpsilon = `PICO_EPS` | ) | const

Determines whether all components of this vector are equal to zero. Since this method uses floating-point comparison, a threshhold value of `in_dEpsilon` is used for equality comparison.

Parameters:

  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

Returns:
  bool true if the vector is null, false otherwise.

See also:
  CSIBCVector3Dd::SetNull

  CSIBCVector3Dd::AreAlmostEqual

CSIBCVector3Dd & SetMinimal | ( | bool | in_bInAbs = `true`,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[inline]`

Ensure that each of the components of this vector are at least as large as `in_dEpsilon`. If not, they are set to `in_dEpsilon`. Note that if comparisons are done with absolute values, the sign of the vector components does not change, if they are less than `in_dEpsilon`.

Parameters:

  | in_bInAbs | true if comparisons are done with absolute values, false if comparisons are done without absolute values. Defaults to true.
  | in_dEpsilon | Minimal value for components of this vector. Defaults to PICO_EPS.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetMinimal

  CSIBCVector3Dd::AreAlmostEqual

CSIBCVector3Dd& SetMinimal | ( | const CSIBCVector3Dd & | ,
|  | bool | in_bInAbs = `true` |
| ) |  |  |

Ensures that each of the components of this vector are at least as large as the components of `in_vct`. If they are not, they are set to be equal to the component of `in_vct`. Note that if comparisons are done with absolute values, the sign of the vector components does not change, if they are less than the corresponding component values in `in_vct`.

Parameters:

  | in_vct | Vector containing minimal component values.
  | in_bInAbs | true if comparisons are done with absolute values, false if comparisons are done without absolute values. Defaults to true.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetMinimal

  CSIBCVector3Dd::AreAlmostEqual

bool operator== | ( | const CSIBCVector3Dd & | in_vct | ) | const

Determines whether all corresponding components of this vector and `in_vct` are exactly equal.

Parameters:

  | in_vct | The vector to compare equality with.

Returns:
  bool true if the vectors are exactly equal, false otherwise.

See also:
  CSIBCVector3Dd::AreAlmostEqual

  CSIBCVector3Dd::operator!=

bool operator!= | ( | const CSIBCVector3Dd & | in_vct | ) | const

Determines whether any corresponding components of this vector and `in_vct` are different.

Parameters:

  | in_vct | The vector to compare inequality with.

Returns:
  bool true if the vectors differ in any component, false otherwise.

See also:
  CSIBCVector3Dd::AreAlmostEqual

  CSIBCVector3Dd::operator==

CSIBCVector3Dd& Negate | ( | const CSIBCVector3Dd & | in_vct | ) |

Sets this vector to the negative of `in_vct`.

Parameters:

  | in_vct | Vector containing the negative value for this vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Negate

CSIBCVector3Dd& Negate | ( | void |  | ) |

Sets this vector to its negative.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Negate

double GetSquaredLength | ( | void |  | ) | const

Gets the squared length of this vector.

Returns:
  double The squared length of this vector.

See also:
  CSIBCVector3Dd::GetLength

  CSIBCVector3Dd::SetLength

  CSIBCVector3Dd::Normalize

double GetLength | ( | void |  | ) | const

Gets the length of this vector.

Returns:
  double The squared length of this vector.

See also:
  CSIBCVector3Dd::GetSquaredLength

  CSIBCVector3Dd::SetLength

  CSIBCVector3Dd::Normalize

bool SetLength | ( | const double | in_dLength | ) |

Sets the length of this vector.

Parameters:

  | in_dLength | New length for this vector.

Returns:
  bool true if the length was set properly, false if the length of the current vector is zero.

See also:
  CSIBCVector3Dd::Normalize

  CSIBCVector3Dd::GetLength

bool Normalize | ( | void |  | ) |

Sets the vector to be a unit vector.

Returns:
  bool true if the length was set properly, false if the length of the current vector is zero.

See also:
  CSIBCVector3Dd::SetLength

  CSIBCVector3Dd::GetLength

CSIBCVector3Dd& Add | ( | const CSIBCVector3Dd & | in_vct | ) |

Adds this vector and `in_vct`. The result is stored in this vector.

Parameters:

  | in_vct | Vector to add to this vector. return CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Add

  CSIBCVector3Dd::Sub

CSIBCVector3Dd& Add | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Adds `in_vct1` and `in_vct2`. The result is stored in this vector.

Parameters:

  | in_vct1 | First vector in the addition.
  | in_vct2 | Second vector in the addition.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Add

  CSIBCVector3Dd::Sub

CSIBCVector3Dd& Sub | ( | const CSIBCVector3Dd & | in_vct | ) |

Subtracts `in_vct` from this vector. The result is stored in this vector.

Parameters:

  | in_vct | Vector to subtract from this vector.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Sub

  CSIBCVector3Dd::Add

CSIBCVector3Dd& Sub | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Subtracts `in_vct2` from `in_vct1`. The result is stored in this vector.

Parameters:

  | in_vct1 | First vector for the subtraction.
  | in_vct2 | Second vector for the subtraction.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Sub

  CSIBCVector3Dd::Add

CSIBCVector3Dd& Mul | ( | const double | in_dFactor | ) |

Multiplies each component of this vector by `in_dFactor`. The result is stored in this vector.

Parameters:

  | in_dFactor | Factor to multiply the components of this vector by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::Div

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

CSIBCVector3Dd& Mul | ( | const double | in_dFactor,
|  | const CSIBCVector3Dd & | in_vct |
| ) |  |  |

Multiplies each of the components in `in_vct` by `in_dFactor`. The result is stored in this vector.

Parameters:

  | in_dFactor | Factor to multiply the components of `in_vct` by.
  | in_vct | Vector to multiply.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::Div

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

CSIBCVector3Dd& Mul | ( | const CSIBCVector3Dd & | in_vct,
|  | const double | in_dFactor |
| ) |  |  |

Multiplies each of the components in `in_vct` by `in_dFactor`. The result is stored in this vector.

Parameters:

  | in_vct | Vector to multiply.
  | in_dFactor | Factor to multiply the components of `in_vct` by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::Div

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

CSIBCVector3Dd& Mul | ( | const CSIBCVector3Dd & | in_vct,
|  | const CSIBCMatrix33d & | in_mat |
| ) |  |  |

Multiplies a row vector `in_vct`, into a 3x3 matrix `in_mat` (`in_vct` * `in_mat`), and stores the result in this vector.

Parameters:

  | in_vct | Row vector to multiply (on the left).
  | in_mat | Matrix to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCMatrix33d & | in_mat | ) |

Multiplies a this vector (as a row vector), into a 3x3 matrix `in_mat` (this * `in_mat`), and stores the result in this vector.

Parameters:

  | in_vct | Row vector to multiply (on the left).
  | in_mat | Matrix to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCMatrix33d & | in_mat,
|  | const CSIBCVector3Dd & | in_vct |
| ) |  |  |

Multiplies a 3x3 matrix `in_mat`, into a column vector, `in_vct` (`in_mat` * `in_vct`), and stores the result in this vector.

Parameters:

  | in_mat | Matrix to multiply (on the left).
  | in_vct | Column vector to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCVector3Dd & | in_vct,
|  | const CSIBCRotMatd & | in_mat |
| ) |  |  |

Multiplies a row vector `in_vct`, into a 3x3 rotation matrix `in_mat` (`in_vct` * `in_mat`), and stores the result in this vector.

Parameters:

  | in_vct | Row vector to multiply (on the left).
  | in_mat | Rotation matrix to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCRotMatd & | in_mat,
|  | const CSIBCVector3Dd & | in_vct |
| ) |  |  |

Multiplies a 3x3 rotation matrix `in_mat`, into a column vector, `in_vct` (`in_mat` * `in_vct`), and stores the result in this vector.

Parameters:

  | in_mat | Rotation matrix to multiply (on the left).
  | in_vct | Column vector to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCVector3Dd & | in_vct,
|  | const CSIBCXfoMatd & | in_mat |
| ) |  |  |

Multiplies a row vector `in_vct`, into a 4x4 transformation matrix `in_mat` (`in_vct` * `in_mat`), and stores the result in this vector. Since a 4-vector is required for the multiplication, the W component of `in_vct` is assumed to be 1. Since the output from this operation is normally a 4-vector, only the X, Y and Z components are used.

Parameters:

  | in_vct | Row vector to multiply (on the left).
  | in_mat | Rotation matrix to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Mul | ( | const CSIBCVector3Dd & | in_vct,
|  | const CSIBCMatrix44d & | in_mat |
| ) |  |  |

Multiplies a row vector `in_vct`, into a 4x4 matrix `in_mat` (`in_vct` * `in_mat`), and stores the result in this vector. Since a 4-vector is required for the multiplication, the W component of `in_vct` is assumed to be 1. The X, Y and Z output components are divided by the resultant W component.

Parameters:

  | in_vct | Row vector to multiply (on the left).
  | in_mat | Rotation matrix to multiply (on the right).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Div

CSIBCVector3Dd& Div | ( | const double | in_dFactor | ) |

Divides each component of this vector by `in_dFactor`. The result is stored in this vector.

Parameters:

  | in_dFactor | Factor to divide the components of this vector by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Div

  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::MulComp

CSIBCVector3Dd& Div | ( | const CSIBCVector3Dd & | in_vct,
|  | const double | in_dFactor |
| ) |  |  |

Divides each component of `in_vct` by `in_dFactor`. The result is stored in this vector.

Parameters:

  | in_vct | Vector to divide.
  | in_dFactor | Factor to divide the components of this vector by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::Div

  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::MulComp

CSIBCVector3Dd& MulComp | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Multiplies each component of `in_vct1` by the corresponding component in `in_vct2`. The result is stored in this vector.

Parameters:

  | in_vct1 | First vector to multiply the components of.
  | in_vct2 | Second vector to multiply the components of.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::Div

CSIBCVector3Dd& MulComp | ( | const CSIBCVector3Dd & | in_vct | ) |

Multiplies each component of `in_vct` by the corresponding component in this vector. The result is stored in this vector.

Parameters:

  | in_vct | Vector to multiply the components of.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::Mul

  CSIBCVector3Dd::Div

CSIBCVector3Dd& DivComp | ( | const CSIBCVector3Dd & | in_vct | ) |

Divides each component of this vector by the corresponding component in `in_vct`. The result is stored in this vector.

Parameters:

  | in_vct | Vector to divide the components of this vector by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::Div

  CSIBCVector3Dd::Mul

CSIBCVector3Dd& DivComp | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Divides each component of `in_vct1` by the corresponding component in `in_vct2`. The result is stored in this vector.

Parameters:

  | in_vct1 | Vector to be divided by the components of `in_vct2`
  | in_vct2 | Vector to divide the components of `in_vct1` by.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::DivComp

  CSIBCVector3Dd::MulComp

  CSIBCVector3Dd::Div

  CSIBCVector3Dd::Mul

CSIBCVector3Dd& SetCross | ( | const CSIBCVector3Dd & | in_vct | ) |

Computes the cross product between this vector and `in_vct` (this x `in_vct`). The result is stored in this vector

Parameters:

  | in_vct | Vector to cross with this vector (on the left).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::GetDot

  CSIBCVector3Dd::SetCross

CSIBCVector3Dd& SetCross | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Computes the cross product between `in_vct1` and `in_vct2` (`in_vct1` x `in_vct2`). The result is stored in this vector.

Parameters:

  | in_vct1 | Vector to cross with this vector (on the left).

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::GetDot

  CSIBCVector3Dd::SetCross

bool SetOrthogonal | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Computes the vector that is orthogonal to `in_vct1`, and in the same plane as `in_vct1` and `in_vct2`. The result is stored in this vector.

Parameters:

  | in_vct1 | Vector that the new vector should be orthogonal to.
  | in_vct2 | Another vector, with `in_vct1` that forms a plane in which the new vector should lie in.

Returns:
  bool true if the orthogonal vector could be calculated, false if `in_vct1` and `in_vct2` are colinear. If false, this vector contains the null vector.

See also:
  CSIBCVector3Dd::AreOrthogonal

  CSIBCVector3Dd::SetOrthoProj

  CSIBCVector3Dd::GetOrthogonalBasis

bool SetOrthoProj | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Computes the vector that is orthogonal to `in_vct1`, and in the same plane as `in_vct1` and `in_vct2`. The result is then projected on `in_vct2`. The result is stored in this vector.

Parameters:

  | in_vct1 | Vector taht the new vector should be orthogonal to.
  | iN_vct2 | Another vector, with `in_vct1` that forms a plane in which the new vector should lie in. The result is then projected onto this vector.

Returns:
  bool true if the orthogonal projected vector could be calculated, false if `in_vct1` and `in_vct2` are colinear. If false, this vector contains the null vector.

See also:
  CSIBCVector3Dd::SetOrthogonal

  CSIBCVector3Dd::AreOrthogonal

  CSIBCVector3Dd::SetProjection

bool SetProjection | ( | const CSIBCVector3Dd & | in_vct | ) |

Projects this vector onto `in_vct`. The projected vector is stored in this vector.

Parameters:

  | in_vct | Vector to project this vector onto.

Returns:
  bool true if the vector is projected, false if the input vector is the null vector. If false, this vector keeps its original value.

See also:
  CSIBCVector3Dd::SetOrthoProj

CSIBCVector3Dd& SetMirror | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  |

Computes `in_vct1` * 2 - `in_vct2`, and stores the result in this vector.

Parameters:

  | in_vct1 | First vector in the computation.
  | in_vct2 | Second vector in the computation.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetProjection

CSIBCVector3Dd& SetMidpoint | ( | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  |

Sets this vector to the midpoint between the two points `in_pnt1` and `in_pnt2`.

Parameters:

  | in_pnt1 | First point for midpoint determination.
  | in_pnt2 | Second point for midpoint determination.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetMean

  CSIBCVector3Dd::LinearPositionInterpolate

CSIBCVector3Dd& SetMean | ( | const CSIBCVector3Dd * | in_vct,
|  | ULONG | in_nbVct |
| ) |  |  |

Computes the mean of the vector components of the vectors in the array `in_vct`. The result is stored in this vector.

Parameters:

  | in_vct | Array of vectors (`in_nbVct` LONG) to calculate the mean of.
  | in_nbVct | Number of vectors in the `in_vct` array.

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetMidpoint

  CSIBCVector3Dd::LinearPositionInterpolate

CSIBCVector3Dd& LinearPositionInterpolate | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dT |
| ) |  |  |

Computes the linear interpolation between the two vectors `in_vct1` and `in_vct2`, at a point `in_dT` between the two vectors.

Parameters:

  | in_vct1 | Starting point for the interpolation.
  | in_vct2 | Ending point for the interpolation.
  | in_dT | Interpolation point between the vectors, in the range [0.0f, 1.0f].

Returns:
  CSIBCVector3Dd& Reference to this vector.

See also:
  CSIBCVector3Dd::SetMidpoint

void SetBounds | ( | const CSIBCVector3Dd & | in_pnt,
|  | CSIBCVector3Dd & | io_min,
|  | CSIBCVector3Dd & | io_max |
| ) |  |  |

Not implemented yet

CSIBCVector3Dd& Combine | ( | const CSIBCVector3Dd & | in_vct1,
|  | const double | in_dS1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dS2 |
| ) |  |  |

Not implemented yet

CSIBCVector3Dd& BsplinePositionInterpolate | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const CSIBCVector3Dd & | in_vct3,
|  | const CSIBCVector3Dd & | in_vct4,
|  | const double | in_dT |
| ) |  |  |

Not implemented yet.

CSIBCVector3Dd& BsplineVectorInterpolate | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const CSIBCVector3Dd & | in_vct3,
|  | const CSIBCVector3Dd & | in_vct4,
|  | const double | in_dT |
| ) |  |  |

Not implemented yet.

## Friends And Related Function Documentation

bool AreAlmostEqual | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Determines whether all corresponding components of the `in_vct1` and `in_vct2` are equal. Since this method uses floating-point comparison, a threshhold value of `in_dEpsilon` is used for equality comparison.

Parameters:

  | in_vct1 | First vector for equality comparison.
  | in_vct2 | Second vector for equality comparison.
  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

Returns:
  bool true if the vectors are equal, false otherwise.

See also:
  CSIBCVector3Dd::operator==

  CSIBCVector3Dd::operator!=

double GetDot | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  | `[friend]`

Computes the dot product between the vectors `in_vct1` and `in_vct2`.

Parameters:

  | in_vct1 | First vector in the dot product.
  | in_vct2 | Second vector in the dot product.

Returns:
  double The dot product between `in_vct1` and `in_vct2`.

See also:
  CSIBCVector3Dd::SetCross

bool AreOrthogonal | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Determines whether two vectors `in_vct1` and `in_vct2` are orthogonal to each other. Since this method uses floating-point comparison, a threshhold value of `in_dEpsilon` is used for equality comparison.

Parameters:

  | in_vct1 | First vector for orthogonality comparison.
  | in_vct2 | Second vector for orthogonality comparison.
  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

Returns:
  bool true if the vectors are orthogonal, false otherwise.

See also:
  CSIBCVector3Dd::SetOrthogonal

  CSIBCVector3Dd::SetOrthoProj

  CSIBCVector3Dd::GetOrthogonalBasis

bool AreParallel | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Determines whether `in_vct1` and `in_vct2` are parallel vectors. Since this method uses floating-point comparison, a threshhold value of `in_dEpsilon` is used for equality comparison.

Parameters:

  | in_vct1 | The first vector in the parallelism comparison.
  | in_vct2 | The second vector in the parallelism comparison.
  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

double GetDistance | ( | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  | `[friend]`

Computes the distance between two points in 3D space given by `in_pnt1` and `in_pnt2`.

Parameters:

  | in_pnt1 | Starting point for distance calculation.
  | in_pnt2 | Ending point for distance calculation.

Returns:
  double The scalar distance between the two points, in 3D space.

See also:
  CSIBCVector3Dd::GetSquaredDistance

double GetSquaredDistance | ( | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  | `[friend]`

Computes the squared distance between two points in 3D space given by `in_pnt1` and `in_pnt2`.

Parameters:

  | in_pnt1 | Starting point for distance calculation.
  | in_pnt2 | Ending point for distance calculation.

Returns:
  double The squared scalar distance between the two points, in 3D space.

See also:
  CSIBCVector3Dd::GetDistance

void GetOrthogonalBasis | ( | const CSIBCVector3Dd & | in_vct1,
|  | CSIBCVector3Dd & | out_vct2,
|  | CSIBCVector3Dd & | out_vct3 |
| ) |  |  | `[friend]`

Computes two vectors `out_vct2` and `out_vct3`, which together with the input vector `in_vct1` form an orthogonal basis. The out vectors are not normalized.

Parameters:

  | in_vct1 | Vector to compute the orthogonal basis from.
  | out_vct2 | Receives an orthogonal basis vector.
  | out_vct3 | Receives an orthogonal basis vector.

See also:
  CSIBCVector3Dd::GetOrthonormalBasis

  CSIBCVector3Dd::SetOrthogonal

  CSIBCVector3Dd::SetOrthoProj

void GetOrthonormalBasis | ( | CSIBCVector3Dd & | io_vct1,
|  | CSIBCVector3Dd & | out_vct2,
|  | CSIBCVector3Dd & | out_vct3 |
| ) |  |  | `[friend]`

Computes two vectors `out_vct2` and `out_vct3`, which together with the input vector `in_vct1` form an orthonormal basis. `io_vct1` is normalized if it is not already normalized.

Parameters:

  | io_vct1 | Vector to compute the orthonormal vector from. Normalized if not already normalized.
  | out_vct2 | Receives an orthonormal basis vector.
  | out_vct3 | Receives an orthonormal basis vector.

See also:
  CSIBCVector3Dd::GetOrthogonalBasis

  CSIBCVector3Dd::SetOrthogonal

  CSIBCVector3Dd::SetOrthoProj

double GetPntsAngle | ( | const CSIBCVector3Dd & | in_pntOrigin,
|  | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  | `[friend]`

Computes the angle between the vectors defined by `in_pntOrigin` to `in_pnt1`, and `in_pntOrigin` to `in_pnt2`. The angle is in the range [0.0f, M_PI].

Parameters:

  | in_pntOrigin | Origin point for the two vectors.
  | in_pnt1 | End point of the first vector.
  | in_pnt2 | End point of the second vector.

Returns:
  double Angle (in radians) between the two vectors. In the range [0.0f, M_PI].

See also:
  CSIBCVector3Dd::GetPntsAngleSigned

  CSIBCVector3Dd::GetPntsCosAngle

  CSIBCVector3Dd::GetVctsAngle

  CSIBCVector3Dd::Get2DVctsAngleSigned

  CSIBCVector3Dd::GetVctsCosAngle

double Get2DPntsAngleSigned | ( | const CSIBCVector3Dd & | in_pntOrigin,
|  | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  | `[friend]`

Computes the angle between the vectors defined by `in_pntOrigin` to `in_pnt1`, and `in_pntOrigin` to `in_pnt2`. The angle is in the range [-M_PI, M_PI]. This angle is positive if it corresponds to a counter-clockwise rotation, and it is negative if it corresponds to a clockwise rotation.

Parameters:

  | in_pntOrigin | Origin point for the two vectors.
  | in_pnt1 | End point of the first vector.
  | in_pnt2 | End point of the second vector.

Returns:
  double Angle (in radians) between the two vectors. In the range [-M_PI, M_PI].

See also:
  CSIBCVector3Dd::GetPntsAngle

  CSIBCVector3Dd::GetPntsCosAngle

  CSIBCVector3Dd::GetVctsAngle

  CSIBCVector3Dd::Get2DVctsAngleSigned

  CSIBCVector3Dd::GetVctsCosAngle

double GetPntsCosAngle | ( | const CSIBCVector3Dd & | in_pntOrigin,
|  | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2 |
| ) |  |  | `[friend]`

Computes the cosine of the angle between the vectors defined by `in_pntOrigin` to `in_pnt1`, and `in_pntOrigin` to `in_pnt2`.

Parameters:

  | in_pntOrigin | Origin point for the two vectors.
  | in_pnt1 | End point of the first vector.
  | in_pnt2 | End point of the second vector.

Returns:
  double Cosine of the angle between the two vectors. In the range [-1.0f, 1.0f].

See also:
  CSIBCVector3Dd::GetPntsAngle

  CSIBCVector3Dd::Get2DPntsAngleSigned

  CSIBCVector3Dd::GetVctsAngle

  CSIBCVector3Dd::Get2DVctsAngleSigned

  CSIBCVector3Dd::GetVctsCosAngle

double GetVctsAngle | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Computes the angle between the vectors `in_vct1` and `in_vct2`. The angle is in the range of [0.0f, M_PI].

Parameters:

  | in_vct1 | First vector.
  | in_vct2 | Second vector.
  | in_dEpsilon | Floating-point comparison error range. Defaults to PICO_EPS.

Returns:
  double Angle (in radians) between the two vectors. In the range [0.0f, M_PI].

See also:
  CSIBCVector3Dd::GetPntsAngle

  CSIBCVector3Dd::Get2DPntsAngleSigned

  CSIBCVector3Dd::GetPntsCosAngle

  CSIBCVector3Dd::Get2DVctsAngleSigned

  CSIBCVector3Dd::GetVctsCosAngle

double Get2DVctsAngleSigned | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2 |
| ) |  |  | `[friend]`

Computes the angle between the vectors `in_vct1` and `in_vct2`. The angle is in the range [-M_PI, M_PI]. This angle is positive if it corresponds to a counter-clockwise rotation, and it is negative if it corresponds to a clockwise rotation.

Parameters:

  | in_vct1 | First vector.
  | in_vct2 | Second vector.

Returns:
  double Angle (in radians) between the two vectors. In the range [-M_PI, M_PI].

See also:
  CSIBCVector3Dd::GetPntsAngle

  CSIBCVector3Dd::Get2DPntsAngleSigned

  CSIBCVector3Dd::GetPntsCosAngle

  CSIBCVector3Dd::GetVctsAngle

  CSIBCVector3Dd::GetVctsCosAngle

double GetVctsCosAngle | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Computes the cosine of the angle between the vectors `in_vct1` and `in_vct2`.

Parameters:

  | in_vct1 | First vector.
  | in_vct2 | Second vector.

Returns:
  double Cosine of the angle between the two vectors. In the range [-1.0f, 1.0f].

See also:
  CSIBCVector3Dd::GetPntsCosAngle

  CSIBCVector3Dd::GetPntsAngle

  CSIBCVector3Dd::Get2DPntsAngleSigned

  CSIBCVector3Dd::GetVctsAngle

  CSIBCVector3Dd::Get2DVctsAngleSigned

int Get2DPntSide | ( | const CSIBCVector3Dd & | in_pnt,
|  | const CSIBCVector3Dd & | in_pntOrigin,
|  | const CSIBCVector3Dd & | in_pntTip |
| ) |  |  | `[friend]`

Determines which 'side' of the vector formed between the points `in_pntOrigin` and `in_pntTip`, a point `in_pnt` is on.

Parameters:

  | in_pnt | Point to determine which side of the vector it is on.
  | in_pntOrigin | Staring point of the vector.
  | in_pntTip | Ending point of the vector.

Returns:
  int The side that the point is on. (-1 == right side, 1 == left side).

double GetTriangleArea | ( | const CSIBCVector3Dd & | in_rPoint0,
|  | const CSIBCVector3Dd & | in_rPoint1,
|  | const CSIBCVector3Dd & | in_rPoint2 |
| ) |  |  | `[friend]`

Calculates the area of the triangle with the verticies `in_rPoint0`, `in_rPoint1` and `in_rPoint2`.

Parameters:

  | in_rPoint0 | First vertex of the triangle.
  | in_rPoint1 | Second vertex of the triangle.
  | in_rPoint2 | Third vertex of the triangle.

bool ArePntsCollinear | ( | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2,
|  | const CSIBCVector3Dd & | in_pnt3,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Not implemented yet.

bool AreVctsCoplanar | ( | const CSIBCVector3Dd & | in_vct1,
|  | const CSIBCVector3Dd & | in_vct2,
|  | const CSIBCVector3Dd & | in_vct3,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Not implemented yet.

bool ArePntsCoplanar | ( | const CSIBCVector3Dd & | in_pnt1,
|  | const CSIBCVector3Dd & | in_pnt2,
|  | const CSIBCVector3Dd & | in_pnt3,
|  | const CSIBCVector3Dd & | in_pnt4,
|  | const double | in_dEpsilon = `PICO_EPS` |
| ) |  |  | `[friend]`

Not implemented yet.

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

- SIBCVector3Dd.h