FieldMapping Class Referenceabstract
Fields

Base class for mapping between world-, local- and voxel coordinates. More...

`#include <FieldMapping.h>`

Inheritance diagram for FieldMapping:

## Public Types

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 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.
Constructors & destructor
| FieldMapping ()
| Constructor.
| FieldMapping (const Box3i &extents)
| Construct with known extents.
virtual | ~FieldMapping ()
| Destructor.
To be implemented by subclasses
virtual Ptr | clone () const =0
| Returns a pointer to a copy of the mapping, pure virtual so ensure derived classes properly implement it.
virtual void | worldToVoxel (const V3d &wsP, V3d &vsP) const =0
| Transform from world space position into voxel space.
virtual void | worldToVoxel (const V3d &wsP, V3d &vsP, float time) const =0
virtual void | voxelToWorld (const V3d &vsP, V3d &wsP) const =0
| Transform from voxel space position into world space.
virtual void | voxelToWorld (const V3d &vsP, V3d &wsP, float time) const =0
virtual void | worldToLocal (const V3d &wsP, V3d &lsP) const =0
| Transform from world space position into local space.
virtual void | worldToLocal (const V3d &wsP, V3d &lsP, float time) const =0
virtual void | localToWorld (const V3d &lsP, V3d &wsP) const =0
| Transform from local space position into world space.
virtual void | localToWorld (const V3d &lsP, V3d &wsP, float time) const =0
virtual V3d | wsVoxelSize (int i, int j, int k) const =0
| Returns world-space size of a voxel at the specified coordinate.
virtual void | extentsChanged ()
| Implement this if the subclass needs to update itself when the resolution changes.
virtual std::string | className () const =0
| Returns the FieldMapping type name. Used when writing/reading from disk.
virtual bool | isIdentical (FieldMapping::Ptr other, double tolerance=0.0) const =0
| Whether the mapping is identical to another mapping.
Transforms implemented in this class
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 const char * | staticClassType ()

## Public Attributes

| DEFINE_FIELD_RTTI_ABSTRACT_CLASS

## Protected Attributes

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.

## Private Types

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

## Detailed Description

Base class for mapping between world-, local- and voxel coordinates.

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

Local coordinates (ls) are defined as [0,1] over the FieldData object's -extents- (not data window). Thus, if the extents.min isn't at origin, the coordinate system stays the same as if it was.

Voxel coordinates (vs) are defined as [0,size-1] over the FieldData object's -extents- (not data window).

Note
  The center of a voxel at (i,j) in integer coordinates is (i+0.5,j+0.5) in continuous coordinates.

Definition at line 86 of file FieldMapping.h.

## Member Typedef Documentation

## Ptr

typedef boost::intrusive_ptr<FieldMapping> FieldMapping::Ptr

Definition at line 92 of file FieldMapping.h.

## class_type

typedef FieldMapping FieldMapping::class_type

Definition at line 96 of file FieldMapping.h.

## base

typedef RefBase FieldMapping::base

private

Convenience typedef for referring to base class.

Definition at line 200 of file FieldMapping.h.

## Constructor & Destructor Documentation

## FieldMapping() [1/2]

FieldMapping::FieldMapping | ( |  | ) |

Constructor.

Definition at line 113 of file FieldMapping.cpp.

: RefBase(),
m_origin(V3i(0)),
m_res(V3i(1))
{
/* Empty */
}
V3i
Imath::V3i V3i
Definition SpiMathLib.h:71
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
RefBase::RefBase
RefBase()
Definition RefCount.h:120

References m_origin, m_res, and RefBase::RefBase().

Referenced by FrustumFieldMapping::FrustumFieldMapping(), FrustumFieldMapping::FrustumFieldMapping(), MatrixFieldMapping::MatrixFieldMapping(), MatrixFieldMapping::MatrixFieldMapping(), NullFieldMapping::NullFieldMapping(), and NullFieldMapping::NullFieldMapping().

## FieldMapping() [2/2]

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

Construct with known extents.

Definition at line 123 of file FieldMapping.cpp.

: RefBase()
{
setExtents(extents);
}
FieldMapping::setExtents
void setExtents(const Box3i &extents)
This sets the field extents information to use for defining the local coordinate space.
Definition FieldMapping.cpp:146

References RefBase::RefBase(), and setExtents().

## ~FieldMapping()

FieldMapping::~FieldMapping | ( |  | ) |

virtual

Destructor.

Definition at line 131 of file FieldMapping.cpp.

{
/* Empty */
}

## Member Function Documentation

## staticClassType()

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

inline static

Definition at line 99 of file FieldMapping.h.

{
return "FieldMapping";
}

Referenced by className().

## setExtents()

void FieldMapping::setExtents | ( | const Box3i & | extents | ) |

This sets the field extents information to use for defining the local coordinate space.

Note
  You need to call this again if you change the resolution of the field after creation. We grab the extents information in this call because it would be too slow to do so in every transformation.

Definition at line 146 of file FieldMapping.cpp.

{
m_origin = extents.min;
m_res = extents.max - extents.min + V3i(1);
extentsChanged();
}
FieldMapping::extentsChanged
virtual void extentsChanged()
Implement this if the subclass needs to update itself when the resolution changes.
Definition FieldMapping.h:161

References extentsChanged(), m_origin, and m_res.

Referenced by FieldMapping().

## origin()

const V3d & FieldMapping::origin | ( |  | ) | const

inline

Returns the origin.

Definition at line 128 of file FieldMapping.h.

{ return m_origin; }

References m_origin.

## resolution()

const V3d & FieldMapping::resolution | ( |  | ) | const

inline

Returns the resolution.

Definition at line 131 of file FieldMapping.h.

{ return m_res; }

References m_res.

## clone()

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

pure virtual

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

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## worldToVoxel() [1/2]

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

pure virtual

Transform from world space position into voxel space.

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## worldToVoxel() [2/2]

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

pure virtual

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## voxelToWorld() [1/2]

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

pure virtual

Transform from voxel space position into world space.

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## voxelToWorld() [2/2]

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

pure virtual

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## worldToLocal() [1/2]

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

pure virtual

Transform from world space position into local space.

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## worldToLocal() [2/2]

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

pure virtual

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## localToWorld() [1/2]

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

pure virtual

Transform from local space position into world space.

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

Referenced by FieldGroup< BaseTypeList_T, Dims_T >::GetWsBounds::operator()().

## localToWorld() [2/2]

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

pure virtual

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## wsVoxelSize()

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

pure virtual

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

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

## extentsChanged()

virtual void FieldMapping::extentsChanged | ( |  | ) |

inline virtual

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

Reimplemented in FrustumFieldMapping, and MatrixFieldMapping.

Definition at line 161 of file FieldMapping.h.

{ /* Empty */ }

Referenced by setExtents().

## className()

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

pure virtual

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

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

Definition at line 139 of file FieldMapping.cpp.

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

References staticClassType().

## isIdentical()

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

pure virtual

Whether the mapping is identical to another mapping.

Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.

References localToVoxel(), and voxelToLocal().

## localToVoxel()

void FieldMapping::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.

Definition at line 155 of file FieldMapping.cpp.

{
vsP = m_origin + lsP * m_res;
}

References m_origin, and m_res.

Referenced by isIdentical(), FrustumFieldMapping::worldToVoxel(), NullFieldMapping::worldToVoxel(), and NullFieldMapping::worldToVoxel().

## voxelToLocal()

void FieldMapping::voxelToLocal | ( | const V3d & | vsP,
|  | V3d & | lsP ) const

Inverse of localToVoxel.

Definition at line 162 of file FieldMapping.cpp.

{
lsP.x = FIELD3D_LERPFACTOR(vsP.x, m_origin.x, m_origin.x + m_res.x);
lsP.y = FIELD3D_LERPFACTOR(vsP.y, m_origin.y, m_origin.y + m_res.y);
lsP.z = FIELD3D_LERPFACTOR(vsP.z, m_origin.z, m_origin.z + m_res.z);
}
FIELD3D_LERPFACTOR
#define FIELD3D_LERPFACTOR
Definition SpiMathLib.h:92

References FIELD3D_LERPFACTOR, m_origin, and m_res.

Referenced by isIdentical(), FrustumFieldMapping::voxelToWorld(), NullFieldMapping::voxelToWorld(), and NullFieldMapping::voxelToWorld().

## Member Data Documentation

## DEFINE_FIELD_RTTI_ABSTRACT_CLASS

FieldMapping::DEFINE_FIELD_RTTI_ABSTRACT_CLASS

Definition at line 97 of file FieldMapping.h.

## m_origin

V3d FieldMapping::m_origin

protected

The integer voxel-space origin of the underlying Field object. Is equal to field.extents.min.

Definition at line 190 of file FieldMapping.h.

Referenced by FrustumFieldMapping::computeVoxelSize(), FieldMapping(), FrustumFieldMapping::getLocalToVoxelMatrix(), MatrixFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), origin(), setExtents(), voxelToLocal(), and FrustumFieldMapping::wsVoxelSize().

## m_res

V3d FieldMapping::m_res

protected

The integer voxel-space resolution of the underlying Field object. Is equal to field.extents.max - field.extents.min + 1.

Definition at line 193 of file FieldMapping.h.

Referenced by FrustumFieldMapping::computeVoxelSize(), FieldMapping(), FrustumFieldMapping::getLocalToVoxelMatrix(), MatrixFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), resolution(), setExtents(), voxelToLocal(), FrustumFieldMapping::wsVoxelSize(), and NullFieldMapping::wsVoxelSize().

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

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