This is a 4-by-4 transform matrix. More...

#include "lmatrix.h"

List of all members.

Classes

class  CRow
class  Row

Public Types

typedef const double * const_iterator
typedef const double * iterator

Public Member Functions

 LMatrix4d (const LMatrix4d &other)
 LMatrix4d (const UnalignedLMatrix4d &other)
 LMatrix4d (double e00, double e01, double e02, double e03, double e10, double e11, double e12, double e13, double e20, double e21, double e22, double e23, double e30, double e31, double e32, double e33)
 LMatrix4d (const LMatrix3d &upper3)
 LMatrix4d (const LMatrix3d &upper3, const LVecBase3d &trans)
 LMatrix4d (const EMatrix4 &m)
void accumulate (const LMatrix4d &other, double weight)
 Computes (*this) += other * weight.
size_t add_hash (size_t hash) const
 Adds the vector into the running hash.
size_t add_hash (size_t hash, double threshold) const
 Adds the vector into the running hash.
bool almost_equal (const LMatrix4d &other, double threshold) const
 Returns true if two matrices are memberwise equal within a specified tolerance.
bool almost_equal (const LMatrix4d &other) const
 Returns true if two matrices are memberwise equal within a default tolerance based on the numeric type.
iterator begin ()
 Returns an iterator that may be used to traverse the elements of the matrix, STL-style.
const_iterator begin () const
 Returns an iterator that may be used to traverse the elements of the matrix, STL-style.
int compare_to (const LMatrix4d &other) const
 This flavor of compare_to uses a default threshold value based on the numeric type.
int compare_to (const LMatrix4d &other, double threshold) const
 Sorts matrices lexicographically, componentwise.
iterator end ()
 Returns an iterator that may be used to traverse the elements of the matrix, STL-style.
const_iterator end () const
 Returns an iterator that may be used to traverse the elements of the matrix, STL-style.
void fill (double fill_value)
 Sets each element of the matrix to the indicated fill_value.
void generate_hash (ChecksumHashGenerator &hashgen) const
 Adds the vector to the indicated hash generator.
void generate_hash (ChecksumHashGenerator &hashgen, double scale) const
 Adds the vector to the indicated hash generator.
double get_cell (int row, int col) const
 Returns a particular element of the matrix.
LVecBase4d get_col (int col) const
 Retrieves the indicated column of the matrix as a 4-component vector.
LVecBase3d get_col3 (int col) const
 Retrieves the indicated column of the matrix as a 3-component vector, ignoring the last row.
const double * get_data () const
 Returns the address of the first of the nine data elements in the matrix.
size_t get_hash () const
 Returns a suitable hash for phash_map.
size_t get_hash (double threshold) const
 Returns a suitable hash for phash_map.
int get_num_components () const
 Returns the number of elements in the matrix, 16.
LVecBase4d get_row (int row) const
 Retrieves the indicated row of the matrix as a 4-component vector.
void get_row (LVecBase4d &result_vec, int row) const
 Stores the indicated row of the matrix as a 4-component vector.
LVecBase3d get_row3 (int row) const
 Retrieves the row column of the matrix as a 3-component vector, ignoring the last column.
void get_row3 (LVecBase3d &result_vec, int row) const
 Stores the row column of the matrix as a 3-component vector, ignoring the last column.
LMatrix3d get_upper_3 () const
 Retrieves the upper 3x3 submatrix.
bool invert_affine_from (const LMatrix4d &other)
 Performs an invert of the indicated matrix, storing the result in this matrix.
bool invert_from (const LMatrix4d &other)
 Computes the inverse of the other matrix, and stores the result in this matrix.
bool invert_in_place ()
 Inverts the current matrix.
bool is_nan () const
 Returns true if any component of the matrix is not-a-number, false otherwise.
typedef LINMATH_MATRIX (double, 4, 4) EMatrix4
 MAKE_SEQ (get_rows, size, get_row)
 MAKE_SEQ (get_cols, size, get_col)
 MAKE_SEQ (get_row3s, size, get_row3)
void multiply (const LMatrix4d &other1, const LMatrix4d &other2)
bool operator!= (const LMatrix4d &other) const
double & operator() (int row, int col)
double operator() (int row, int col) const
LMatrix4d operator* (const LMatrix4d &other) const
LMatrix4d operator* (double scalar) const
LMatrix4doperator*= (const LMatrix4d &other)
LMatrix4doperator*= (double scalar)
LMatrix4doperator+= (const LMatrix4d &other)
 Performs a memberwise addition between two matrices.
LMatrix4doperator-= (const LMatrix4d &other)
 Performs a memberwise addition between two matrices.
LMatrix4d operator/ (double scalar) const
LMatrix4doperator/= (double scalar)
bool operator< (const LMatrix4d &other) const
 This performs a lexicographical comparison.
LMatrix4doperator= (const LMatrix4d &other)
LMatrix4doperator= (const UnalignedLMatrix4d &other)
LMatrix4doperator= (double fill_value)
bool operator== (const LMatrix4d &other) const
CRow operator[] (int i) const
Row operator[] (int i)
void output (ostream &out) const
void read_datagram (DatagramIterator &source)
 Reads the matrix from the Datagram using get_stdfloat().
void read_datagram_fixed (DatagramIterator &scan)
 Reads the matrix from the Datagram using get_float32() or get_float64().
void set (double e00, double e01, double e02, double e03, double e10, double e11, double e12, double e13, double e20, double e21, double e22, double e23, double e30, double e31, double e32, double e33)
void set_cell (int row, int col, double value)
 Changes a particular element of the matrix.
void set_col (int col, const LVecBase4d &v)
 Replaces the indicated column of the matrix.
void set_col (int col, const LVecBase3d &v)
 Replaces the indicated column of the matrix with the indicated 3-component vector, ignoring the last row.
void set_rotate_mat (double angle, const LVecBase3d &axis, CoordinateSystem cs=CS_default)
 Sets mat to a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.
void set_rotate_mat_normaxis (double angle, const LVecBase3d &axis, CoordinateSystem cs=CS_default)
 Fills mat with a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.
void set_row (int row, const LVecBase4d &v)
 Replaces the indicated row of the matrix.
void set_row (int row, const LVecBase3d &v)
 Replaces the indicated row of the matrix with the indicated 3-component vector, ignoring the last column.
void set_scale_mat (const LVecBase3d &scale)
 Fills mat with a matrix that applies the indicated scale in each of the three axes.
void set_scale_shear_mat (const LVecBase3d &scale, const LVecBase3d &shear, CoordinateSystem cs=CS_default)
 Fills mat with a matrix that applies the indicated scale and shear.
void set_shear_mat (const LVecBase3d &shear, CoordinateSystem cs=CS_default)
 Fills mat with a matrix that applies the indicated shear in each of the three planes.
void set_translate_mat (const LVecBase3d &trans)
 Fills mat with a matrix that applies the indicated translation.
void set_upper_3 (const LMatrix3d &upper3)
 Sets the upper 3x3 submatrix.
void transpose_from (const LMatrix4d &other)
void transpose_in_place ()
void write (ostream &out, int indent_level=0) const
void write_datagram (Datagram &destination) const
 Writes the matrix to the Datagram using add_stdfloat().
void write_datagram_fixed (Datagram &destination) const
 Writes the matrix to the Datagram using add_float32() or add_float64(), depending on the type of floats in the matrix, regardless of the setting of Datagram::set_stdfloat_double().
LVecBase4d xform (const LVecBase4d &v) const
 4-component vector or point times matrix.
void xform_in_place (LVecBase4d &v) const
 4-component vector or point times matrix.
LVecBase3d xform_point (const LVecBase3d &v) const
 The matrix transforms a 3-component point (including translation component) and returns the result.
LVecBase3d xform_point_general (const LVecBase3d &v) const
 The matrix transforms a 3-component point (including translation component) and returns the result, as a fully general operation.
void xform_point_general_in_place (LVecBase3d &v) const
 The matrix transforms a 3-component point (including translation component), as a fully general operation.
void xform_point_in_place (LVecBase3d &v) const
 The matrix transforms a 3-component point (including translation component).
LVecBase3d xform_vec (const LVecBase3d &v) const
 The matrix transforms a 3-component vector (without translation component) and returns the result.
LVecBase3d xform_vec_general (const LVecBase3d &v) const
 The matrix transforms a 3-component vector (without translation component) and returns the result, as a fully general operation.
void xform_vec_general_in_place (LVecBase3d &v) const
 The matrix transforms a 3-component vector (without translation component), as a fully general operation.
void xform_vec_in_place (LVecBase3d &v) const
 The matrix transforms a 3-component vector (without translation component).

Static Public Member Functions

static const LMatrix4dconvert_mat (CoordinateSystem from, CoordinateSystem to)
 Returns a matrix that transforms from the indicated coordinate system to the indicated coordinate system.
static TypeHandle get_class_type ()
static const LMatrix4dident_mat ()
 Returns an identity matrix.
static void init_type ()
static const LMatrix4dones_mat ()
 Returns an matrix filled with ones.
static LMatrix4d rotate_mat (double angle, const LVecBase3d &axis, CoordinateSystem cs=CS_default)
 Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.
static LMatrix4d rotate_mat_normaxis (double angle, const LVecBase3d &axis, CoordinateSystem cs=CS_default)
 Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.
static LMatrix4d scale_mat (const LVecBase3d &scale)
 Returns a matrix that applies the indicated scale in each of the three axes.
static LMatrix4d scale_mat (double sx, double sy, double sz)
 Returns a matrix that applies the indicated scale in each of the three axes.
static LMatrix4d scale_mat (double scale)
 Returns a matrix that applies the indicated uniform scale.
static LMatrix4d scale_shear_mat (const LVecBase3d &scale, const LVecBase3d &shear, CoordinateSystem cs=CS_default)
 Returns a matrix that applies the indicated scale and shear.
static LMatrix4d scale_shear_mat (double sx, double sy, double sz, double shxy, double shxz, double shyz, CoordinateSystem cs=CS_default)
 Returns a matrix that applies the indicated scale and shear.
static LMatrix4d shear_mat (const LVecBase3d &shear, CoordinateSystem cs=CS_default)
 Returns a matrix that applies the indicated shear in each of the three planes.
static LMatrix4d shear_mat (double shxy, double shxz, double shyz, CoordinateSystem cs=CS_default)
 Returns a matrix that applies the indicated shear in each of the three planes.
static int size ()
 Returns 4: the number of rows of a LMatrix4.
static LMatrix4d translate_mat (const LVecBase3d &trans)
 Returns a matrix that applies the indicated translation.
static LMatrix4d translate_mat (double tx, double ty, double tz)
 Returns a matrix that applies the indicated translation.
static const LMatrix4dy_to_z_up_mat ()
 Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.
static const LMatrix4dz_to_y_up_mat ()
 Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.
static const LMatrix4dzeros_mat ()
 Returns an matrix filled with zeros.

Public Attributes

EMatrix4 _m

Detailed Description

This is a 4-by-4 transform matrix.

Definition at line 4592 of file lmatrix.h.


Member Function Documentation

void LMatrix4d::accumulate ( const LMatrix4d other,
double  weight 
) [inline]

Computes (*this) += other * weight.

Definition at line 6380 of file lmatrix.h.

size_t LMatrix4d::add_hash ( size_t  hash) const [inline]

Adds the vector into the running hash.

Definition at line 5714 of file lmatrix.h.

size_t LMatrix4d::add_hash ( size_t  hash,
double  threshold 
) const [inline]

Adds the vector into the running hash.

Definition at line 5724 of file lmatrix.h.

bool LMatrix4d::almost_equal ( const LMatrix4d other,
double  threshold 
) const
bool LMatrix4d::almost_equal ( const LMatrix4d other) const [inline]

Returns true if two matrices are memberwise equal within a default tolerance based on the numeric type.

Definition at line 6659 of file lmatrix.h.

LMatrix4d::iterator LMatrix4d::begin ( ) [inline]

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

Definition at line 5606 of file lmatrix.h.

LMatrix4d::const_iterator LMatrix4d::begin ( ) const [inline]

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

Definition at line 5628 of file lmatrix.h.

int LMatrix4d::compare_to ( const LMatrix4d other) const [inline]

This flavor of compare_to uses a default threshold value based on the numeric type.

Definition at line 5684 of file lmatrix.h.

Referenced by EggTexture::sorts_less_than().

int LMatrix4d::compare_to ( const LMatrix4d other,
double  threshold 
) const

Sorts matrices lexicographically, componentwise.

Returns a number less than 0 if this matrix sorts before the other one, greater than zero if it sorts after, 0 if they are equivalent (within the indicated tolerance).

Definition at line 1889 of file lmatrix.cxx.

const LMatrix4d & LMatrix4d::convert_mat ( CoordinateSystem  from,
CoordinateSystem  to 
) [static]

Returns a matrix that transforms from the indicated coordinate system to the indicated coordinate system.

Definition at line 1821 of file lmatrix.cxx.

Referenced by EggData::set_coordinate_system().

LMatrix4d::iterator LMatrix4d::end ( ) [inline]

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

Definition at line 5617 of file lmatrix.h.

LMatrix4d::const_iterator LMatrix4d::end ( ) const [inline]

Returns an iterator that may be used to traverse the elements of the matrix, STL-style.

Definition at line 5639 of file lmatrix.h.

void LMatrix4d::fill ( double  fill_value) [inline]

Sets each element of the matrix to the indicated fill_value.

This is of questionable value, but is sometimes useful when initializing to zero.

Definition at line 5222 of file lmatrix.h.

void LMatrix4d::generate_hash ( ChecksumHashGenerator hashgen) const [inline]

Adds the vector to the indicated hash generator.

Definition at line 6669 of file lmatrix.h.

void LMatrix4d::generate_hash ( ChecksumHashGenerator hashgen,
double  scale 
) const

Adds the vector to the indicated hash generator.

Definition at line 2133 of file lmatrix.cxx.

double LMatrix4d::get_cell ( int  row,
int  col 
) const [inline]

Returns a particular element of the matrix.

Definition at line 5561 of file lmatrix.h.

LVecBase4d LMatrix4d::get_col ( int  col) const [inline]

Retrieves the indicated column of the matrix as a 4-component vector.

Definition at line 5423 of file lmatrix.h.

LVecBase3d LMatrix4d::get_col3 ( int  col) const [inline]

Retrieves the indicated column of the matrix as a 3-component vector, ignoring the last row.

Definition at line 5475 of file lmatrix.h.

const double * LMatrix4d::get_data ( ) const [inline]

Returns the address of the first of the nine data elements in the matrix.

The remaining elements occupy the next eight positions in row-major order.

Definition at line 5585 of file lmatrix.h.

Referenced by XFileDataObject::set().

size_t LMatrix4d::get_hash ( ) const [inline]

Returns a suitable hash for phash_map.

Definition at line 5694 of file lmatrix.h.

size_t LMatrix4d::get_hash ( double  threshold) const [inline]

Returns a suitable hash for phash_map.

Definition at line 5704 of file lmatrix.h.

int LMatrix4d::get_num_components ( ) const [inline]

Returns the number of elements in the matrix, 16.

Definition at line 5595 of file lmatrix.h.

LVecBase4d LMatrix4d::get_row ( int  row) const [inline]

Retrieves the indicated row of the matrix as a 4-component vector.

Definition at line 5387 of file lmatrix.h.

void LMatrix4d::get_row ( LVecBase4d result_vec,
int  row 
) const [inline]

Stores the indicated row of the matrix as a 4-component vector.

Definition at line 5405 of file lmatrix.h.

LVecBase3d LMatrix4d::get_row3 ( int  row) const [inline]

Retrieves the row column of the matrix as a 3-component vector, ignoring the last column.

Definition at line 5441 of file lmatrix.h.

Referenced by EggVertexPool::transform().

void LMatrix4d::get_row3 ( LVecBase3d result_vec,
int  row 
) const [inline]

Stores the row column of the matrix as a 3-component vector, ignoring the last column.

Definition at line 5458 of file lmatrix.h.

LMatrix3d LMatrix4d::get_upper_3 ( ) const [inline]

Retrieves the upper 3x3 submatrix.

Definition at line 5298 of file lmatrix.h.

bool LMatrix4d::invert_affine_from ( const LMatrix4d other) [inline]

Performs an invert of the indicated matrix, storing the result in this matrix.

The calculation is only correct of the other matrix represents an affine transform.

The other matrix must be a different object than this matrix. However, if you need to invert a matrix in place, see invert_in_place.

The return value is true if the matrix was successfully inverted, false if there was a singularity.

Definition at line 6329 of file lmatrix.h.

bool LMatrix4d::invert_from ( const LMatrix4d other) [inline]

Computes the inverse of the other matrix, and stores the result in this matrix.

This is a fully general operation and makes no assumptions about the type of transform represented by the matrix.

The other matrix must be a different object than this matrix. However, if you need to invert a matrix in place, see invert_in_place.

The return value is true if the matrix was successfully inverted, false if the was a singularity.

Definition at line 6260 of file lmatrix.h.

Referenced by EggGroup::adjust_under(), and DXFFile::compute_ocs().

bool LMatrix4d::invert_in_place ( ) [inline]

Inverts the current matrix.

Returns true if the inverse is successful, false if the matrix was singular.

Definition at line 6368 of file lmatrix.h.

Referenced by EggTopstrip::adjust_transform(), EggJointData::get_net_frame_inv(), and Triangulator3::triangulate().

bool LMatrix4d::is_nan ( ) const [inline]

Returns true if any component of the matrix is not-a-number, false otherwise.

Definition at line 5546 of file lmatrix.h.

const LMatrix4d & LMatrix4d::ones_mat ( ) [inline, static]

Returns an matrix filled with ones.

Definition at line 5042 of file lmatrix.h.

LMatrix4d & LMatrix4d::operator+= ( const LMatrix4d other) [inline]

Performs a memberwise addition between two matrices.

Definition at line 6050 of file lmatrix.h.

LMatrix4d & LMatrix4d::operator-= ( const LMatrix4d other) [inline]

Performs a memberwise addition between two matrices.

Definition at line 6086 of file lmatrix.h.

bool LMatrix4d::operator< ( const LMatrix4d other) const [inline]

This performs a lexicographical comparison.

It's of questionable mathematical meaning, but sometimes has a practical purpose for sorting unique vectors, especially in an STL container. Also see compare_to().

Definition at line 5653 of file lmatrix.h.

Reads the matrix from the Datagram using get_stdfloat().

Definition at line 2322 of file lmatrix.cxx.

Reads the matrix from the Datagram using get_float32() or get_float64().

See write_datagram_fixed().

Definition at line 2287 of file lmatrix.cxx.

LMatrix4d LMatrix4d::rotate_mat ( double  angle,
const LVecBase3d axis,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

Definition at line 6505 of file lmatrix.h.

Referenced by EggTransform::add_rotate3d(), EggBase::ns_dispatch_rotate_axis(), and EggBase::ns_dispatch_rotate_xyz().

LMatrix4d LMatrix4d::rotate_mat_normaxis ( double  angle,
const LVecBase3d axis,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

Assumes axis has been prenormalized.

Definition at line 6520 of file lmatrix.h.

Referenced by EggTransform::add_rotate2d(), EggTransform::add_rotx(), EggTransform::add_roty(), EggTransform::add_rotz(), and EggXfmSAnim::compose_with_order().

LMatrix4d LMatrix4d::scale_mat ( double  sx,
double  sy,
double  sz 
) [inline, static]

Returns a matrix that applies the indicated scale in each of the three axes.

Definition at line 6551 of file lmatrix.h.

LMatrix4d LMatrix4d::scale_mat ( double  scale) [inline, static]

Returns a matrix that applies the indicated uniform scale.

Definition at line 6565 of file lmatrix.h.

LMatrix4d LMatrix4d::scale_shear_mat ( const LVecBase3d scale,
const LVecBase3d shear,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that applies the indicated scale and shear.

Definition at line 6606 of file lmatrix.h.

Referenced by EggXfmSAnim::compose_with_order().

LMatrix4d LMatrix4d::scale_shear_mat ( double  sx,
double  sy,
double  sz,
double  shxy,
double  shxz,
double  shyz,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that applies the indicated scale and shear.

Definition at line 6621 of file lmatrix.h.

void LMatrix4d::set_cell ( int  row,
int  col,
double  value 
) [inline]

Changes a particular element of the matrix.

Definition at line 5572 of file lmatrix.h.

void LMatrix4d::set_col ( int  col,
const LVecBase4d v 
) [inline]

Replaces the indicated column of the matrix.

Definition at line 5333 of file lmatrix.h.

void LMatrix4d::set_col ( int  col,
const LVecBase3d v 
) [inline]

Replaces the indicated column of the matrix with the indicated 3-component vector, ignoring the last row.

Definition at line 5370 of file lmatrix.h.

void LMatrix4d::set_rotate_mat ( double  angle,
const LVecBase3d axis,
CoordinateSystem  cs = CS_default 
)

Sets mat to a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

Definition at line 1911 of file lmatrix.cxx.

void LMatrix4d::set_rotate_mat_normaxis ( double  angle,
const LVecBase3d axis,
CoordinateSystem  cs = CS_default 
)

Fills mat with a matrix that rotates by the given angle in degrees counterclockwise about the indicated vector.

Assumes axis has been prenormalized.

Definition at line 1982 of file lmatrix.cxx.

void LMatrix4d::set_row ( int  row,
const LVecBase3d v 
) [inline]

Replaces the indicated row of the matrix with the indicated 3-component vector, ignoring the last column.

Definition at line 5352 of file lmatrix.h.

void LMatrix4d::set_scale_mat ( const LVecBase3d scale) [inline]

Fills mat with a matrix that applies the indicated scale in each of the three axes.

Definition at line 6427 of file lmatrix.h.

void LMatrix4d::set_scale_shear_mat ( const LVecBase3d scale,
const LVecBase3d shear,
CoordinateSystem  cs = CS_default 
) [inline]

Fills mat with a matrix that applies the indicated scale and shear.

Definition at line 6453 of file lmatrix.h.

void LMatrix4d::set_shear_mat ( const LVecBase3d shear,
CoordinateSystem  cs = CS_default 
) [inline]

Fills mat with a matrix that applies the indicated shear in each of the three planes.

Definition at line 6441 of file lmatrix.h.

void LMatrix4d::set_translate_mat ( const LVecBase3d trans) [inline]

Fills mat with a matrix that applies the indicated translation.

Definition at line 6413 of file lmatrix.h.

void LMatrix4d::set_upper_3 ( const LMatrix3d upper3) [inline]

Sets the upper 3x3 submatrix.

Definition at line 5273 of file lmatrix.h.

LMatrix4d LMatrix4d::shear_mat ( const LVecBase3d shear,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that applies the indicated shear in each of the three planes.

Definition at line 6579 of file lmatrix.h.

LMatrix4d LMatrix4d::shear_mat ( double  shxy,
double  shxz,
double  shyz,
CoordinateSystem  cs = CS_default 
) [inline, static]

Returns a matrix that applies the indicated shear in each of the three planes.

Definition at line 6592 of file lmatrix.h.

int LMatrix4d::size ( ) [inline, static]

Returns 4: the number of rows of a LMatrix4.

Definition at line 5535 of file lmatrix.h.

LMatrix4d LMatrix4d::translate_mat ( double  tx,
double  ty,
double  tz 
) [inline, static]

Returns a matrix that applies the indicated translation.

Definition at line 6491 of file lmatrix.h.

void LMatrix4d::write_datagram ( Datagram destination) const

Writes the matrix to the Datagram using add_stdfloat().

This is appropriate when you want to write the matrix using the standard width setting, especially when you are writing a bam file.

Definition at line 2308 of file lmatrix.cxx.

void LMatrix4d::write_datagram_fixed ( Datagram destination) const

Writes the matrix to the Datagram using add_float32() or add_float64(), depending on the type of floats in the matrix, regardless of the setting of Datagram::set_stdfloat_double().

This is appropriate when you want to write a fixed-width value to the datagram, especially when you are not writing a bam file.

Definition at line 2268 of file lmatrix.cxx.

LVecBase4d LMatrix4d::xform ( const LVecBase4d v) const [inline]

4-component vector or point times matrix.

This is a fully general operation.

Definition at line 5764 of file lmatrix.h.

void LMatrix4d::xform_in_place ( LVecBase4d v) const [inline]

4-component vector or point times matrix.

This is a fully general operation.

Definition at line 5868 of file lmatrix.h.

LVecBase3d LMatrix4d::xform_point ( const LVecBase3d v) const [inline]

The matrix transforms a 3-component point (including translation component) and returns the result.

This assumes the matrix is an affine transform.

Definition at line 5784 of file lmatrix.h.

Referenced by PerlinNoise3::noise(), and ImageTransformColors::process_image().

LVecBase3d LMatrix4d::xform_point_general ( const LVecBase3d v) const [inline]

The matrix transforms a 3-component point (including translation component) and returns the result, as a fully general operation.

Definition at line 5809 of file lmatrix.h.

The matrix transforms a 3-component point (including translation component), as a fully general operation.

Definition at line 5904 of file lmatrix.h.

void LMatrix4d::xform_point_in_place ( LVecBase3d v) const [inline]

The matrix transforms a 3-component point (including translation component).

This assumes the matrix is an affine transform.

Definition at line 5886 of file lmatrix.h.

LVecBase3d LMatrix4d::xform_vec ( const LVecBase3d v) const [inline]

The matrix transforms a 3-component vector (without translation component) and returns the result.

This assumes the matrix is an orthonormal transform.

Definition at line 5824 of file lmatrix.h.

LVecBase3d LMatrix4d::xform_vec_general ( const LVecBase3d v) const [inline]

The matrix transforms a 3-component vector (without translation component) and returns the result, as a fully general operation.

Definition at line 5849 of file lmatrix.h.

void LMatrix4d::xform_vec_general_in_place ( LVecBase3d v) const [inline]

The matrix transforms a 3-component vector (without translation component), as a fully general operation.

Definition at line 5935 of file lmatrix.h.

void LMatrix4d::xform_vec_in_place ( LVecBase3d v) const [inline]

The matrix transforms a 3-component vector (without translation component).

This assumes the matrix is an orthonormal transform.

Definition at line 5917 of file lmatrix.h.

const LMatrix4d & LMatrix4d::y_to_z_up_mat ( ) [inline, static]

Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.

Definition at line 6637 of file lmatrix.h.

const LMatrix4d & LMatrix4d::z_to_y_up_mat ( ) [inline, static]

Returns a matrix that transforms from the Y-up coordinate system to the Z-up coordinate system.

Definition at line 6648 of file lmatrix.h.

const LMatrix4d & LMatrix4d::zeros_mat ( ) [inline, static]

Returns an matrix filled with zeros.

Definition at line 5052 of file lmatrix.h.


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