MatrixFieldMapping Class Reference
Fields

Represents the mapping of a field by a matrix transform. More...

`#include <FieldMapping.h>`

Inheritance diagram for MatrixFieldMapping:

## Public Types

typedef MatrixFieldMapping | class_type
typedef Curve< Imath::M44d > | MatrixCurve
| Time-varying matrix.
typedef boost::intrusive_ptr< MatrixFieldMapping > | Ptr
| Convenience typedef.
Public Types inherited from FieldMapping
typedef FieldMapping | class_type
typedef boost::intrusive_ptr< FieldMapping > | Ptr
Public Types inherited from RefBase
typedef boost::intrusive_ptr< RefBase > | Ptr
typedef boost::weak_ptr< RefBase > | WeakPtr

## Public Member Functions

const M44d & | localToWorld () const
| Returns a reference to the local to world transform.
const MatrixCurve::SampleVec & | localToWorldSamples () const
| Returns a vector of all motion samples for local to world transform.
void | makeIdentity ()
| Sets the transform to identity. This makes it functionally equivalent to a NullFieldMapping.
void | setLocalToWorld (const M44d &lsToWs)
| Sets the local to world transform. All other matrices will be updated based on this.
void | setLocalToWorld (float t, const M44d &lsToWs)
| Sets the local to world transform at a given time.
const M44d & | voxelToWorld () const
| Returns a reference to the voxel to world space transform.
const M44d & | worldToVoxel () const
| Returns a reference to the world to voxel space transform.
M44d | worldToVoxel (float time) const
| Returns the world to voxel space transform at a given time.
Constructors & destructor
| MatrixFieldMapping ()
| MatrixFieldMapping (const Box3i &extents)
From FieldMapping
virtual void | worldToVoxel (const V3d &wsP, V3d &vsP) const
| Transform from world space position into voxel space.
virtual void | worldToVoxel (const V3d &wsP, V3d &vsP, float time) const
virtual void | voxelToWorld (const V3d &vsP, V3d &wsP) const
| Transform from voxel space position into world space.
virtual void | voxelToWorld (const V3d &vsP, V3d &wsP, float time) const
virtual void | worldToLocal (const V3d &wsP, V3d &lsP) const
| Transform from world space position into local space.
virtual void | worldToLocal (const V3d &wsP, V3d &lsP, float time) const
virtual void | localToWorld (const V3d &lsP, V3d &wsP) const
| Transform from local space position into world space.
virtual void | localToWorld (const V3d &lsP, V3d &wsP, float time) const
void | worldToVoxelDir (const V3d &wsV, V3d &vsV) const
void | voxelToWorldDir (const V3d &vsV, V3d &wsV) const
void | worldToLocalDir (const V3d &wsV, V3d &lsV) const
void | localToWorldDir (const V3d &lsV, V3d &wsV) const
virtual void | extentsChanged ()
| Implement this if the subclass needs to update itself when the resolution changes.
virtual std::string | className () const
| Returns the FieldMapping type name. Used when writing/reading from disk.
virtual bool | isIdentical (FieldMapping::Ptr other, double tolerance=0.0) const
| Whether the mapping is identical to another mapping.
virtual V3d | wsVoxelSize (int, int, int) const
| Returns world-space size of a voxel at the specified coordinate.
virtual FieldMapping::Ptr | clone () const
| Returns a pointer to a copy of the mapping, pure virtual so ensure derived classes properly implement it.
Public Member Functions inherited from FieldMapping
const V3d & | origin () const
| Returns the origin.
const V3d & | resolution () const
| Returns the resolution.
void | setExtents (const Box3i &extents)
| This sets the field extents information to use for defining the local coordinate space.
| FieldMapping ()
| Constructor.
| FieldMapping (const Box3i &extents)
| Construct with known extents.
virtual | ~FieldMapping ()
| Destructor.
void | localToVoxel (const V3d &lsP, V3d &vsP) const
| Transform from local space to voxel space. This is just a multiplication by the resolution of the Field that we're mapping.
void | voxelToLocal (const V3d &vsP, V3d &lsP) const
| Inverse of localToVoxel.
Public Member Functions inherited from RefBase
void | ref () const
| Used by boost::intrusive_pointer.
size_t | refcnt ()
| Used by boost::intrusive_pointer.
void | unref () const
| Used by boost::intrusive_pointer.
WeakPtr | weakPtr () const
| RefBase ()
| RefBase (const RefBase &)
| Copy constructor.
RefBase & | operator= (const RefBase &)
| Assignment operator.
virtual | ~RefBase ()
| Destructor.
virtual bool | checkRTTI (const char *typenameStr)=0
| This function is only implemented by concrete classes and triggers the actual RTTI check through matchRTTI();.
bool | matchRTTI (const char *typenameStr)
| Performs a check to see if the given typename string matches this class' This needs to be implemented in -all- subclasses, even abstract ones.

## Static Public Member Functions

static const char * | staticClassType ()
Static Public Member Functions inherited from FieldMapping
static const char * | staticClassType ()
static const char * | staticClassType ()

## Public Attributes

| DEFINE_FIELD_RTTI_CONCRETE_CLASS
Public Attributes inherited from FieldMapping
| DEFINE_FIELD_RTTI_ABSTRACT_CLASS

## Private Types

typedef FieldMapping | base
| Convenience typedef for referring to base class.

## Private Member Functions

void | getLocalToVoxelMatrix (M44d &result)
void | updateTransform ()
| Updates the local to world transformation matrix.

## Private Attributes

bool | m_isTimeVarying
| Stores whether the curve has more than one time sample.
M44d | m_lsToWs
| Local space to world space.
MatrixCurve | m_lsToWsCurve
| Time-varying local to world space transform.
M44d | m_vsToWs
| Voxel space to world space.
MatrixCurve | m_vsToWsCurve
| Time-varying voxel to world space transform.
M44d | m_wsToLs
| World space to local space.
M44d | m_wsToVs
| World space to voxel space.
V3d | m_wsVoxelSize
| Precomputed world-space voxel size. Calculations may assume orthogonal transformation for efficiency.

## Additional Inherited Members

Protected Attributes inherited from FieldMapping
V3d | m_origin
| The integer voxel-space origin of the underlying Field object. Is equal to field.extents.min.
V3d | m_res
| The integer voxel-space resolution of the underlying Field object. Is equal to field.extents.max - field.extents.min + 1.

## Detailed Description

Represents the mapping of a field by a matrix transform.

Refer to using_mappings for examples of how to use this in your code.

Note
  Regarding time-varying matrices. If setLocalToWorld(M44d) is called, an underlying Curve object is created with just one sample at time=0.0.

Todo
  Add calls for easily specifying the transform given grid size, offset, rotation, etc.

Definition at line 334 of file FieldMapping.h.

## Member Typedef Documentation

## Ptr

typedef boost::intrusive_ptr<MatrixFieldMapping> MatrixFieldMapping::Ptr

Convenience typedef.

Definition at line 341 of file FieldMapping.h.

## MatrixCurve

typedef Curve<Imath::M44d> MatrixFieldMapping::MatrixCurve

Time-varying matrix.

Definition at line 343 of file FieldMapping.h.

## class_type

typedef MatrixFieldMapping MatrixFieldMapping::class_type

Definition at line 347 of file FieldMapping.h.

## base

typedef FieldMapping MatrixFieldMapping::base

private

Convenience typedef for referring to base class.

Definition at line 530 of file FieldMapping.h.

## Constructor & Destructor Documentation

## MatrixFieldMapping() [1/2]

MatrixFieldMapping::MatrixFieldMapping | ( |  | ) |

Definition at line 253 of file FieldMapping.cpp.

: FieldMapping()
{
makeIdentity();
}
FieldMapping::FieldMapping
FieldMapping()
Constructor.
Definition FieldMapping.cpp:113
MatrixFieldMapping::makeIdentity
void makeIdentity()
Sets the transform to identity. This makes it functionally equivalent to a NullFieldMapping.
Definition FieldMapping.cpp:287

References FieldMapping::FieldMapping(), and makeIdentity().

Referenced by clone().

## MatrixFieldMapping() [2/2]

MatrixFieldMapping::MatrixFieldMapping | ( | const Box3i & | extents | ) |

Definition at line 261 of file FieldMapping.cpp.

: FieldMapping(extents)
{
makeIdentity();
}

References FieldMapping::FieldMapping(), and makeIdentity().

## Member Function Documentation

## staticClassType()

const char * MatrixFieldMapping::staticClassType | ( |  | ) |

inline static

Definition at line 350 of file FieldMapping.h.

{
return "MatrixFieldMapping";
}

Referenced by className().

## setLocalToWorld() [1/2]

void MatrixFieldMapping::setLocalToWorld | ( | const M44d & | lsToWs | ) |

Sets the local to world transform. All other matrices will be updated based on this.

Note
  This resets the Curve to contain just one sample at time=0.0

Definition at line 269 of file FieldMapping.cpp.

{
if (m_lsToWsCurve.numSamples() > 0) {
makeIdentity();
}
setLocalToWorld(0.0f, lsToWs);
}
MatrixFieldMapping::setLocalToWorld
void setLocalToWorld(const M44d &lsToWs)
Sets the local to world transform. All other matrices will be updated based on this.
Definition FieldMapping.cpp:269
MatrixFieldMapping::m_lsToWsCurve
MatrixCurve m_lsToWsCurve
Time-varying local to world space transform.
Definition FieldMapping.h:515

References m_lsToWsCurve, makeIdentity(), and setLocalToWorld().

Referenced by setLocalToWorld().

## setLocalToWorld() [2/2]

void MatrixFieldMapping::setLocalToWorld | ( | float | t,
|  | const M44d & | lsToWs )

Sets the local to world transform at a given time.

Definition at line 279 of file FieldMapping.cpp.

{
m_lsToWsCurve.addSample(t, lsToWs);
updateTransform();
}
MatrixFieldMapping::updateTransform
void updateTransform()
Updates the local to world transformation matrix.
Definition FieldMapping.cpp:363

References m_lsToWsCurve, and updateTransform().

## localToWorld() [1/3]

const M44d & MatrixFieldMapping::localToWorld | ( |  | ) | const

inline

Returns a reference to the local to world transform.

Note
  This assumes the query to be at time=0.0

Definition at line 376 of file FieldMapping.h.

{ return m_lsToWs; }
MatrixFieldMapping::m_lsToWs
M44d m_lsToWs
Local space to world space.
Definition FieldMapping.h:503

References m_lsToWs.

## worldToVoxel() [1/4]

const M44d & MatrixFieldMapping::worldToVoxel | ( |  | ) | const

inline

Returns a reference to the world to voxel space transform.

Note
  This assumes the query to be at time=0.0

Definition at line 381 of file FieldMapping.h.

{ return m_wsToVs; }
MatrixFieldMapping::m_wsToVs
M44d m_wsToVs
World space to voxel space.
Definition FieldMapping.h:512

References m_wsToVs.

Referenced by Vec<>::setWsBoundsOptimization().

## worldToVoxel() [2/4]

M44d MatrixFieldMapping::worldToVoxel | ( | float | time | ) | const

inline

Returns the world to voxel space transform at a given time.

Definition at line 385 of file FieldMapping.h.

{
if (!m_isTimeVarying) {
return m_wsToVs;
} else {
return m_vsToWsCurve.linear(time).inverse();
}
}
MatrixFieldMapping::m_vsToWsCurve
MatrixCurve m_vsToWsCurve
Time-varying voxel to world space transform.
Definition FieldMapping.h:517
MatrixFieldMapping::m_isTimeVarying
bool m_isTimeVarying
Stores whether the curve has more than one time sample.
Definition FieldMapping.h:521

References m_isTimeVarying, m_vsToWsCurve, and m_wsToVs.

## voxelToWorld() [1/3]

const M44d & MatrixFieldMapping::voxelToWorld | ( |  | ) | const

inline

Returns a reference to the voxel to world space transform.

Note
  This assumes the query to be at time=0.0

Definition at line 396 of file FieldMapping.h.

{ return m_vsToWs; }
MatrixFieldMapping::m_vsToWs
M44d m_vsToWs
Voxel space to world space.
Definition FieldMapping.h:509

References m_vsToWs.

## localToWorldSamples()

const MatrixCurve::SampleVec & MatrixFieldMapping::localToWorldSamples | ( |  | ) | const

inline

Returns a vector of all motion samples for local to world transform.

Definition at line 400 of file FieldMapping.h.

{ return m_lsToWsCurve.samples(); }

References m_lsToWsCurve.

## makeIdentity()

void MatrixFieldMapping::makeIdentity | ( |  | ) |

Sets the transform to identity. This makes it functionally equivalent to a NullFieldMapping.

Definition at line 287 of file FieldMapping.cpp.

{
m_lsToWsCurve.clear();
updateTransform();
}

References m_lsToWsCurve, and updateTransform().

Referenced by MatrixFieldMapping(), MatrixFieldMapping(), and setLocalToWorld().

## worldToVoxel() [3/4]

virtual void MatrixFieldMapping::worldToVoxel | ( | const V3d & | wsP,
|  | V3d & | vsP ) const

inline virtual

Transform from world space position into voxel space.

Implements FieldMapping.

Definition at line 412 of file FieldMapping.h.

{ m_wsToVs.multVecMatrix(wsP, vsP); }

References m_wsToVs.

## worldToVoxel() [4/4]

virtual void MatrixFieldMapping::worldToVoxel | ( | const V3d & | wsP,
|  | V3d & | vsP,
|  | float | time ) const

inline virtual

Implements FieldMapping.

Definition at line 414 of file FieldMapping.h.

{
if (!m_isTimeVarying) {
m_wsToVs.multVecMatrix(wsP, vsP);
} else {
M44d wsToVs = m_vsToWsCurve.linear(time).inverse();
wsToVs.multVecMatrix(wsP, vsP);
}
}
M44d
Imath::M44d M44d
Definition SpiMathLib.h:82

References m_isTimeVarying, m_vsToWsCurve, and m_wsToVs.

## voxelToWorld() [2/3]

virtual void MatrixFieldMapping::voxelToWorld | ( | const V3d & | vsP,
|  | V3d & | wsP ) const

inline virtual

Transform from voxel space position into world space.

Implements FieldMapping.

Definition at line 424 of file FieldMapping.h.

{ m_vsToWs.multVecMatrix(vsP, wsP); }

References m_vsToWs.

## voxelToWorld() [3/3]

virtual void MatrixFieldMapping::voxelToWorld | ( | const V3d & | vsP,
|  | V3d & | wsP,
|  | float | time ) const

inline virtual

Implements FieldMapping.

Definition at line 426 of file FieldMapping.h.

{
if (!m_isTimeVarying) {
m_vsToWs.multVecMatrix(vsP, wsP);
} else {
M44d vsToWs = m_vsToWsCurve.linear(time);
vsToWs.multVecMatrix(vsP, wsP);
}
}

References m_isTimeVarying, m_vsToWs, and m_vsToWsCurve.

## worldToLocal() [1/2]

virtual void MatrixFieldMapping::worldToLocal | ( | const V3d & | wsP,
|  | V3d & | lsP ) const

inline virtual

Transform from world space position into local space.

Implements FieldMapping.

Definition at line 436 of file FieldMapping.h.

{ m_wsToLs.multVecMatrix(wsP, lsP); }
MatrixFieldMapping::m_wsToLs
M44d m_wsToLs
World space to local space.
Definition FieldMapping.h:506

References m_wsToLs.

Referenced by FieldGroup< BaseTypeList_T, Dims_T >::GetIntersections::intersectMatrixMapping().

## worldToLocal() [2/2]

virtual void MatrixFieldMapping::worldToLocal | ( | const V3d & | wsP,
|  | V3d & | lsP,
|  | float | time ) const

inline virtual

Implements FieldMapping.

Definition at line 438 of file FieldMapping.h.

{
if (!m_isTimeVarying) {
m_wsToLs.multVecMatrix(wsP, lsP);
} else {
M44d wsToLs = m_lsToWsCurve.linear(time).inverse();
wsToLs.multVecMatrix(wsP, lsP);
}
}

References m_isTimeVarying, m_lsToWsCurve, and m_wsToLs.

## localToWorld() [2/3]

virtual void MatrixFieldMapping::localToWorld | ( | const V3d & | lsP,
|  | V3d & | wsP ) const

inline virtual

Transform from local space position into world space.

Implements FieldMapping.

Definition at line 449 of file FieldMapping.h.

{ m_lsToWs.multVecMatrix(lsP, wsP); }

References m_lsToWs.

## localToWorld() [3/3]

virtual void MatrixFieldMapping::localToWorld | ( | const V3d & | lsP,
|  | V3d & | wsP,
|  | float | time ) const

inline virtual

Implements FieldMapping.

Definition at line 451 of file FieldMapping.h.

{
if (!m_isTimeVarying) {
m_lsToWs.multVecMatrix(lsP, wsP);
} else {
M44d lsToWs = m_lsToWsCurve.linear(time);
lsToWs.multVecMatrix(lsP, wsP);
}
}

References m_isTimeVarying, m_lsToWs, and m_lsToWsCurve.

## worldToVoxelDir()

void MatrixFieldMapping::worldToVoxelDir | ( | const V3d & | wsV,
|  | V3d & | vsV ) const

inline

Todo
  Generalize and make time-dependent.

Definition at line 462 of file FieldMapping.h.

{ m_wsToVs.multDirMatrix(wsV, vsV); }

References m_wsToVs.

## voxelToWorldDir()

void MatrixFieldMapping::voxelToWorldDir | ( | const V3d & | vsV,
|  | V3d & | wsV ) const

inline

Todo
  Generalize and make time-dependent.

Definition at line 466 of file FieldMapping.h.

{ m_vsToWs.multDirMatrix(vsV, wsV); }

References m_vsToWs.

## worldToLocalDir()

void MatrixFieldMapping::worldToLocalDir | ( | const V3d & | wsV,
|  | V3d & | lsV ) const

inline

Todo
  Generalize and make time-dependent.

Definition at line 470 of file FieldMapping.h.

{ m_wsToLs.multDirMatrix(wsV, lsV); }

References m_wsToLs.

Referenced by FieldGroup< BaseTypeList_T, Dims_T >::GetIntersections::intersectMatrixMapping().

## localToWorldDir()

void MatrixFieldMapping::localToWorldDir | ( | const V3d & | lsV,
|  | V3d & | wsV ) const

inline

Todo
  Generalize and make time-dependent.

Definition at line 474 of file FieldMapping.h.

{ m_lsToWs.multDirMatrix(lsV, wsV); }

References m_lsToWs.

## extentsChanged()

void MatrixFieldMapping::extentsChanged | ( |  | ) |

virtual

Implement this if the subclass needs to update itself when the resolution changes.

Reimplemented from FieldMapping.

Definition at line 295 of file FieldMapping.cpp.

{
updateTransform();
}

References updateTransform().

## className()

std::string MatrixFieldMapping::className | ( |  | ) | const

virtual

Returns the FieldMapping type name. Used when writing/reading from disk.

Implements FieldMapping.

Definition at line 302 of file FieldMapping.cpp.

{
return std::string(staticClassType());
}
MatrixFieldMapping::staticClassType
static const char * staticClassType()
Definition FieldMapping.h:350

References staticClassType().

## isIdentical()

bool MatrixFieldMapping::isIdentical | ( | FieldMapping::Ptr | other,
|  | double | tolerance = 0.0 ) const

virtual

Whether the mapping is identical to another mapping.

Implements FieldMapping.

Definition at line 309 of file FieldMapping.cpp.

{
typedef MatrixFieldMapping::MatrixCurve::SampleVec SampleVec;
if (other->className() != k_matrixMappingName) {
return false;
} else {
MatrixFieldMapping::Ptr mm =
FIELD_DYNAMIC_CAST<MatrixFieldMapping>(other);
if (mm) {
const SampleVec lsToWs1 = m_lsToWsCurve.samples();
const SampleVec lsToWs2 = mm->m_lsToWsCurve.samples();
const SampleVec vsToWs1 = m_vsToWsCurve.samples();
const SampleVec vsToWs2 = mm->m_vsToWsCurve.samples();
size_t numSamples = lsToWs1.size();
// First check if time sample counts differ
// lsToWs and vsToWs are guaranteed to have same sample count.
if (lsToWs1.size() != lsToWs2.size()) {
return false;
}
// Then check if all time samples match, then check localToWorld
// and voxelToWorld matrices
for (size_t i = 0; i < numSamples; ++i) {
if (lsToWs1[i].first != lsToWs2[i].first) {
return false;
}
if (!checkMatricesIdentical(lsToWs1[i].second, lsToWs2[i].second,
tolerance)) {
return false;
}
if (!checkMatricesIdentical(vsToWs1[i].second, vsToWs2[i].second,
tolerance)) {
return false;
}
}
return true;
} else {
return false;
}
}
return false;
}
FIELD_DYNAMIC_CAST
#define FIELD_DYNAMIC_CAST
Definition RefCount.h:271
Curve< Imath::M44d >::SampleVec
std::vector< Sample > SampleVec
Definition Curve.h:102
MatrixFieldMapping::Ptr
boost::intrusive_ptr< MatrixFieldMapping > Ptr
Convenience typedef.
Definition FieldMapping.h:341
FIELD3D_NAMESPACE_OPEN::checkMatricesIdentical
bool checkMatricesIdentical(const Matrix_T &m1, const Matrix_T &m2, double tolerance)
Definition FieldMapping.cpp:86

References FIELD_DYNAMIC_CAST, m_lsToWsCurve, and m_vsToWsCurve.

## wsVoxelSize()

virtual V3d MatrixFieldMapping::wsVoxelSize | ( | int | i,
|  | int | j,
|  | int | k ) const

inline virtual

Returns world-space size of a voxel at the specified coordinate.

Implements FieldMapping.

Definition at line 484 of file FieldMapping.h.

{ return m_wsVoxelSize; }
MatrixFieldMapping::m_wsVoxelSize
V3d m_wsVoxelSize
Precomputed world-space voxel size. Calculations may assume orthogonal transformation for efficiency.
Definition FieldMapping.h:525

References m_wsVoxelSize.

Referenced by FieldGroup< BaseTypeList_T, Dims_T >::GetIntersections::intersectMatrixMapping().

## clone()

FieldMapping::Ptr MatrixFieldMapping::clone | ( |  | ) | const

virtual

Returns a pointer to a copy of the mapping, pure virtual so ensure derived classes properly implement it.

Implements FieldMapping.

Definition at line 414 of file FieldMapping.cpp.

{
return Ptr(new MatrixFieldMapping(*this));
}
MatrixFieldMapping::MatrixFieldMapping
MatrixFieldMapping()
Definition FieldMapping.cpp:253

References MatrixFieldMapping().

## updateTransform()

void MatrixFieldMapping::updateTransform | ( |  | ) |

private

Updates the local to world transformation matrix.

Definition at line 363 of file FieldMapping.cpp.

{
typedef MatrixCurve::SampleVec::const_iterator SampleIter;
// Build the voxel to world space transforms ---
M44d lsToVs;
getLocalToVoxelMatrix(lsToVs);
M44d vsToLs = lsToVs.inverse();
// Loop over all samples in lsToWs, append vsToLs and create new curve
// Also handle the special case where lsToWs has no samples. In that
// case m_vsToWsCurve still has to have one sample.
const MatrixCurve::SampleVec &lsToWs = m_lsToWsCurve.samples();
m_vsToWsCurve.clear();
for (SampleIter i = lsToWs.begin(), end = lsToWs.end(); i != end; i++) {
m_vsToWsCurve.addSample(i->first, vsToLs * i->second);
}
// See if the curve has more than just a single sample
m_isTimeVarying = m_lsToWsCurve.numSamples() > 1;
// Sample the time-varying transforms at time=0.0
m_lsToWs = m_lsToWsCurve.linear(0.0);
m_wsToLs = m_lsToWs.inverse();
m_vsToWs = vsToLs * m_lsToWs;
m_wsToVs = m_vsToWs.inverse();
// Precompute the voxel size
V3d voxelOrigin, nextVoxel;
m_vsToWs.multVecMatrix(V3d(0, 0, 0), voxelOrigin);
m_vsToWs.multVecMatrix(V3d(1, 0, 0), nextVoxel);
m_wsVoxelSize.x = (nextVoxel - voxelOrigin).length();
m_vsToWs.multVecMatrix(V3d(0, 1, 0), nextVoxel);
m_wsVoxelSize.y = (nextVoxel - voxelOrigin).length();
m_vsToWs.multVecMatrix(V3d(0, 0, 1), nextVoxel);
m_wsVoxelSize.z = (nextVoxel - voxelOrigin).length();
}
V3d
Imath::V3d V3d
Definition SpiMathLib.h:74
MatrixFieldMapping::getLocalToVoxelMatrix
void getLocalToVoxelMatrix(M44d &result)
Definition FieldMapping.cpp:402

References getLocalToVoxelMatrix(), m_isTimeVarying, m_lsToWs, m_lsToWsCurve, m_vsToWs, m_vsToWsCurve, m_wsToLs, m_wsToVs, and m_wsVoxelSize.

Referenced by extentsChanged(), makeIdentity(), and setLocalToWorld().

## getLocalToVoxelMatrix()

void MatrixFieldMapping::getLocalToVoxelMatrix | ( | M44d & | result | ) |

private

Todo
  Unit test this

Definition at line 402 of file FieldMapping.cpp.

{
// Local to voxel is a scale by the resolution of the field, offset
// to the origin of the extents
M44d scaling, translation;
scaling.setScale(m_res);
translation.setTranslation(m_origin);
result = scaling * translation;
}
FieldMapping::m_origin
V3d m_origin
The integer voxel-space origin of the underlying Field object. Is equal to field.extents....
Definition FieldMapping.h:190
FieldMapping::m_res
V3d m_res
The integer voxel-space resolution of the underlying Field object. Is equal to field....
Definition FieldMapping.h:193

References FieldMapping::m_origin, and FieldMapping::m_res.

Referenced by updateTransform().

## Member Data Documentation

## DEFINE_FIELD_RTTI_CONCRETE_CLASS

MatrixFieldMapping::DEFINE_FIELD_RTTI_CONCRETE_CLASS

Definition at line 348 of file FieldMapping.h.

## m_lsToWs

M44d MatrixFieldMapping::m_lsToWs

private

Local space to world space.

Note
  This is used only when m_lsToWsCurve has zero or one samples.

Definition at line 503 of file FieldMapping.h.

Referenced by localToWorld(), localToWorld(), localToWorld(), localToWorldDir(), and updateTransform().

## m_wsToLs

M44d MatrixFieldMapping::m_wsToLs

private

World space to local space.

Note
  This is used only when m_lsToWsCurve has zero or one samples.

Definition at line 506 of file FieldMapping.h.

Referenced by updateTransform(), worldToLocal(), worldToLocal(), and worldToLocalDir().

## m_vsToWs

M44d MatrixFieldMapping::m_vsToWs

private

Voxel space to world space.

Note
  This is used only when m_lsToWsCurve has zero or one samples.

Definition at line 509 of file FieldMapping.h.

Referenced by updateTransform(), voxelToWorld(), voxelToWorld(), voxelToWorld(), and voxelToWorldDir().

## m_wsToVs

M44d MatrixFieldMapping::m_wsToVs

private

World space to voxel space.

Note
  This is used only when m_lsToWsCurve has zero or one samples.

Definition at line 512 of file FieldMapping.h.

Referenced by updateTransform(), worldToVoxel(), worldToVoxel(), worldToVoxel(), worldToVoxel(), and worldToVoxelDir().

## m_lsToWsCurve

MatrixCurve MatrixFieldMapping::m_lsToWsCurve

private

Time-varying local to world space transform.

Definition at line 515 of file FieldMapping.h.

Referenced by isIdentical(), localToWorld(), localToWorldSamples(), makeIdentity(), setLocalToWorld(), setLocalToWorld(), updateTransform(), and worldToLocal().

## m_vsToWsCurve

MatrixCurve MatrixFieldMapping::m_vsToWsCurve

private

Time-varying voxel to world space transform.

Definition at line 517 of file FieldMapping.h.

Referenced by isIdentical(), updateTransform(), voxelToWorld(), worldToVoxel(), and worldToVoxel().

## m_isTimeVarying

bool MatrixFieldMapping::m_isTimeVarying

private

Stores whether the curve has more than one time sample.

Note
  This is set by updateTransform().

Definition at line 521 of file FieldMapping.h.

Referenced by localToWorld(), updateTransform(), voxelToWorld(), worldToLocal(), worldToVoxel(), and worldToVoxel().

## m_wsVoxelSize

V3d MatrixFieldMapping::m_wsVoxelSize

private

Precomputed world-space voxel size. Calculations may assume orthogonal transformation for efficiency.

Definition at line 525 of file FieldMapping.h.

Referenced by updateTransform(), and wsVoxelSize().

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

- export/FieldMapping.h
- src/FieldMapping.cpp