- Main Page
- Classes
- Files
- Directories

- Class List
- Class Hierarchy
- Class Members

# cVector3d Struct Reference

cVector3d represents a 3D vector with components X, Y and Z. More...

`#include <CVector3d.h>`

List of all members.

## Public Member Functions
| cVector3d ()
double & | operator[] (unsigned int index)
void | zero ()
double | get (const unsigned int &a_component) const
void | operator/= (const double &a_val)
void | operator *= (const double &a_val)
void | operator+= (const cVector3d &a_input)
void | operator-= (const cVector3d &a_input)
void | set (const double &a_x, const double &a_y, const double &a_z)
bool | set (const char *a_initStr)
bool | set (const string &a_initStr)
void | copyto (cVector3d &a_destination) const
void | copyfrom (const cVector3d &a_source)
void | add (const cVector3d &a_vector)
void | add (const double &a_x, const double &a_y, const double &a_z)
void | addr (const cVector3d &a_vector, cVector3d &a_result) const
void | addr (const double &a_x, const double &a_y, const double &a_z, cVector3d &a_result) const
void | sub (const cVector3d &a_vector)
void | sub (const double &a_x, const double &a_y, const double &a_z)
void | subr (const cVector3d &a_vector, cVector3d &a_result) const
void | subr (const double &a_x, const double &a_y, const double &a_z, cVector3d &a_result) const
void | mul (const double &a_scalar)
void | mulr (const double &a_scalar, cVector3d &a_result) const
void | div (const double &a_scalar)
void | divr (const double &a_scalar, cVector3d &a_result) const
void | negate ()
void | negater (cVector3d &a_result) const
void | cross (const cVector3d &a_vector)
cVector3d | crossAndReturn (const cVector3d &a_vector) const
void | crossr (const cVector3d &a_vector, cVector3d &a_result) const
double | dot (const cVector3d &a_vector) const
void | elementMul (const cVector3d &a_vector)
void | elementMulr (const cVector3d &a_vector, cVector3d &a_result) const
double | length () const
double | lengthsq (void) const
void | normalize ()
void | normalizer (cVector3d &a_result) const
double | distance (const cVector3d &a_vector) const
double | distancesq (const cVector3d &a_vector) const
bool | equals (const cVector3d &a_vector, const double epsilon=0.0) const
void | str (string &a_string, const unsigned int a_precision=2) const
string | str (const unsigned int a_precision=2) const
void | print (const unsigned int a_precision=2) const
void | decompose (const cVector3d &a_input, cVector3d &a_parallel, cVector3d &a_perpendicular)
void | slerp (double a_level, cVector3d const &a_vector1, cVector3d a_vector2)
## Public Attributes
double | x
| Component X of vector.
double | y
| Component Y of vector.
double | z
| Component Z of vector.

## Detailed Description

cVector3d represents a 3D vector with components X, Y and Z.

## Constructor & Destructor Documentation

cVector3d::cVector3d | ( |  | ) | `[inline]`

Constructors of cVector3d.

You can initialize a cVector3d from any of the following:

char* string double,double,double cVector3d double* float*

See the set(char*) function for a description of the acceptable string formats.

## Member Function Documentation

double& cVector3d::operator[] | ( | unsigned int | index | ) | `[inline]`

Cast to a double*

This replaces the previous [] operators (without breaking existing code).

void cVector3d::zero | ( |  | ) | `[inline]`

Clear vector with zeros.

double cVector3d::get | ( | const unsigned int & | a_component | ) | const`[inline]`

Return the i th component of the vector. a_component = 0 return x, a_component = 1 returns y, a_component = 2 returns z.

Parameters:

  | a_component | component number

void cVector3d::operator/= | ( | const double & | a_val | ) | `[inline]`

An overloaded /= operator for vector/scalar division

void cVector3d::operator *= | ( | const double & | a_val | ) | `[inline]`

An overloaded *= operator for vector/scalar multiplication

void cVector3d::operator+= | ( | const cVector3d & | a_input | ) | `[inline]`

An overloaded += operator for vector/vector addition

void cVector3d::operator-= | ( | const cVector3d & | a_input | ) | `[inline]`

An overloaded -= operator for vector/vector subtraction

void cVector3d::set | ( | const double & | a_x,
|  | const double & | a_y,
|  | const double & | a_z |
| ) |  |  | `[inline]`

Initialize 3 dimensional vector with parameters `a_X`, `a_Y` and `a_Z`.

Parameters:

  | a_x | X component.
  | a_y | Y component.
  | a_z | Z component.

bool cVector3d::set | ( | const char * | a_initStr | ) | `[inline]`

Initialize a vector from a string of the form (x,y,z), the same form produced by str(). Will actually accept any of the following forms:

(4.3,23,54) 4.3 54 2.1 4.5,7.8,9.1

...i.e., it expects three numbers, optionally preceded by '(' and whitespace, and separated by commas or whitespace.

Parameters:

  | a_initStr | The string to convert

Returns:
  TRUE if conversion was successful.

bool cVector3d::set | ( | const string & | a_initStr | ) | `[inline]`

Initialize a vector from a string of the form (x,y,z) (the same form produced by str() )

Parameters:

  | a_initStr | The string to convert

Returns:
  TRUE if conversion was successful.

void cVector3d::copyto | ( | cVector3d & | a_destination | ) | const`[inline]`

Copy current vector to external vector as parameter.

Parameters:

  | a_destination | Destination vector.

void cVector3d::copyfrom | ( | const cVector3d & | a_source | ) | `[inline]`

Copy external vector as parameter to current vector.

Parameters:

  | a_source | Source vector.

void cVector3d::add | ( | const cVector3d & | a_vector | ) | `[inline]`

Addition between current vector and external vector passed as parameter.
Result is stored in current vector.

Parameters:

  | a_vector | This vector is added to current one.

void cVector3d::add | ( | const double & | a_x,
|  | const double & | a_y,
|  | const double & | a_z |
| ) |  |  | `[inline]`

Addition between current vector and external vector passed as parameter.
Result is stored in current vector.

Parameters:

  | a_x | X component.
  | a_y | Y component.
  | a_z | Z component.

void cVector3d::addr | ( | const cVector3d & | a_vector,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Addition between current vector and external vector passed as parameter.
Result is stored in external a_result vector.

Parameters:

  | a_vector | Vector which is added to current one.
  | a_result | Vector where result is stored.

void cVector3d::addr | ( | const double & | a_x,
|  | const double & | a_y,
|  | const double & | a_z,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Addition between current vector and vector passed by parameter.
Result is stored in a_result vector.

Parameters:

  | a_x | X component.
  | a_y | Y component.
  | a_z | Z component.
  | a_result | Vector where result is stored.

void cVector3d::sub | ( | const cVector3d & | a_vector | ) | `[inline]`

Subtraction between current vector and an external vector passed as parameter.
Result is stored in current vector.

Parameters:

  | a_vector | Vector which is subtracted from current one.

void cVector3d::sub | ( | const double & | a_x,
|  | const double & | a_y,
|  | const double & | a_z |
| ) |  |  | `[inline]`

Subtract an external vector passed as parameter from current vector.
Result is stored in current vector.

Parameters:

  | a_x | X component.
  | a_y | Y component.
  | a_z | Z component.

void cVector3d::subr | ( | const cVector3d & | a_vector,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Subtraction between current vector and external vector passed as parameter.
Result is stored in external a_result vector.

Parameters:

  | a_vector | Vector which is subtracted from current one.
  | a_result | Vector where result is stored.

void cVector3d::subr | ( | const double & | a_x,
|  | const double & | a_y,
|  | const double & | a_z,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Subtract current vector from vector passed by parameter.
Result is stored in a_result vector.

Parameters:

  | a_x | X component.
  | a_y | Y component.
  | a_z | Z component.
  | a_result | Vector where result is stored.

void cVector3d::mul | ( | const double & | a_scalar | ) | `[inline]`

Multiply current vector by a scalar.
Result is stored in current vector.

Parameters:

  | a_scalar | Scalar value.

void cVector3d::mulr | ( | const double & | a_scalar,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Multiply current vector by a scalar.
Result is stored in a_result vector.

Parameters:

  | a_scalar | Scalar value.
  | a_result | Result vector.

void cVector3d::div | ( | const double & | a_scalar | ) | `[inline]`

Divide current vector by a scalar. No check for divide-by-zero is performed.

Result is stored in current vector.

Parameters:

  | a_scalar | Scalar value.

void cVector3d::divr | ( | const double & | a_scalar,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Divide current vector by a scalar.
Result is stored in a_result vector.

Parameters:

  | a_scalar | Scalar value.
  | a_result | Result vector.

void cVector3d::negate | ( |  | ) | `[inline]`

Negate current vector.
Result is stored in current vector.

void cVector3d::negater | ( | cVector3d & | a_result | ) | const`[inline]`

Negate current vector.
Result is stored in a_result vector.

Parameters:

  | a_result | Result vector.

void cVector3d::cross | ( | const cVector3d & | a_vector | ) | `[inline]`

Compute the cross product between current vector and an external vector.
Result is stored in current vector.

Parameters:

  | a_vector | Vector with which cross product is computed with.

cVector3d cVector3d::crossAndReturn | ( | const cVector3d & | a_vector | ) | const`[inline]`

Compute the cross product between current vector and an external vector passed as parameter.

Result is returned. Performance-wise, cross() and crossr() are usually preferred, since this version creates a new stack variable.

Parameters:

  | a_vector | Vector with which cross product is computed.

Returns:
  Resulting cross product.

void cVector3d::crossr | ( | const cVector3d & | a_vector,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Compute the cross product between current vector and an external vector passed as parameter.
Result is stored in a_result vector.

Parameters:

  | a_vector | Vector with which cross product is computed.
  | a_result | Vector where result is stored.

double cVector3d::dot | ( | const cVector3d & | a_vector | ) | const`[inline]`

Compute the dot product between current vector and an external vector passed as parameter.

Parameters:

  | a_vector | Vector with which dot product is computed.

Returns:
  Returns dot product computed between both vectors.

void cVector3d::elementMul | ( | const cVector3d & | a_vector | ) | `[inline]`

Compute the element-by-element product between current vector and an external vector and store in the current vector.

Parameters:

  | a_vector | Vector with which product is computed.

void cVector3d::elementMulr | ( | const cVector3d & | a_vector,
|  | cVector3d & | a_result |
| ) |  |  | const`[inline]`

Compute the element-by-element product between current vector and an external vector and store in the supplied output vector.

Parameters:

  | a_vector | Vector with which product is computed.
  | a_result | Resulting vector.

double cVector3d::length | ( |  | ) | const`[inline]`

Compute the length of current vector.

Returns:
  Returns length of current vector.

double cVector3d::lengthsq | ( | void |  | ) | const`[inline]`

Compute the square length of current vector.

Returns:
  Returns square length of current vector.

void cVector3d::normalize | ( |  | ) | `[inline]`

Normalize current vector to become a vector of length one.
Warning: Vector should not be equal to (0,0,0) or a division by zero error will occur.
Result is stored in current vector.

void cVector3d::normalizer | ( | cVector3d & | a_result | ) | const`[inline]`

Normalize current vector to become a vector of length one.
WARNING: Vector should not be equal to (0,0,0) or a division by zero error will occur.
Result is stored in a_result vector.

Parameters:

  | a_result | Vector where result is stored.

double cVector3d::distance | ( | const cVector3d & | a_vector | ) | const`[inline]`

Compute the distance between current point and an external point passed as parameter.

Parameters:

  | a_vector | Point to which the distance is measured

Returns:
  Returns distance between the points

double cVector3d::distancesq | ( | const cVector3d & | a_vector | ) | const`[inline]`

Compute the square distance between the current point and an external point.

Parameters:

  | a_vector | Point to which squared distance is measured

Returns:
  Returns the squared distance between the points

bool cVector3d::equals | ( | const cVector3d & | a_vector,
|  | const double | epsilon = `0.0` |
| ) |  |  | const`[inline]`

Test whether the current vector and an external vector are equal.

Parameters:

  | a_vector | Vector with which equality is checked.
  | epsilon | Two vectors will be considered equal if each component is within epsilon units. Defaults to zero.

Returns:
  Returns `true` if both vectors are equal, otherwise returns `false`.

void cVector3d::str | ( | string & | a_string,
|  | const unsigned int | a_precision = `2` |
| ) |  |  | const`[inline]`

Convert current vector into a string.

Parameters:

  | a_string | String where conversion is stored
  | a_precision | Number of digits.

string cVector3d::str | ( | const unsigned int | a_precision = `2` | ) | const`[inline]`

Convert current vector into a string, which is returned on the stack.

Parameters:

  | a_precision | Number of digits.

void cVector3d::print | ( | const unsigned int | a_precision = `2` | ) | const`[inline]`

Print the current vector using the CHAI_DEBUG_PRINT macro.

Parameters:

  | a_precision | Number of digits.

void cVector3d::decompose | ( | const cVector3d & | a_input,
|  | cVector3d & | a_parallel,
|  | cVector3d & | a_perpendicular |
| ) |  |  | `[inline]`

Decompose me into components parallel and perpendicular to the input vector.

Parameters:

  | a_input | Reference vector.
  | a_parallel | Parallel component
  | a_perpendicular | Perpendicular component

void cVector3d::slerp | ( | double | a_level,
|  | cVector3d const & | a_vector1,
|  | cVector3d | a_vector2 |
| ) |  |  | `[inline]`

Spherically linearly interpolate between two vectors and store in this vector. Vectors should have the same length

Parameters:

  | a_level | Fraction of distance to a_vector2 (0 is fully at a_vector1, 1.0 is fully at a_vector2)
  | a_vector1 | First vector to interpolate from
  | a_vector2 | Second vector to interpolate from

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

- chai3d/src/math/CVector3d.h