Field3D
|
Base class for mapping between world-, local- and voxel coordinates. More...
#include <FieldMapping.h>
Public Types | |
typedef FieldMapping | class_type |
typedef boost::intrusive_ptr< FieldMapping > | Ptr |
![]() | |
typedef boost::intrusive_ptr< RefBase > | Ptr |
typedef boost::weak_ptr< RefBase > | WeakPtr |
Public Member Functions | |
const V3d & | origin () const |
Returns the origin. More... | |
const V3d & | resolution () const |
Returns the resolution. More... | |
void | setExtents (const Box3i &extents) |
This sets the field extents information to use for defining the local coordinate space. More... | |
Constructors & destructor | |
FieldMapping () | |
Constructor. More... | |
FieldMapping (const Box3i &extents) | |
Construct with known extents. More... | |
virtual | ~FieldMapping () |
Destructor. More... | |
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. More... | |
virtual void | worldToVoxel (const V3d &wsP, V3d &vsP) const =0 |
Transform from world space position into voxel space. More... | |
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. More... | |
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. More... | |
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. More... | |
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. More... | |
virtual void | extentsChanged () |
Implement this if the subclass needs to update itself when the resolution changes. More... | |
virtual std::string | className () const =0 |
Returns the FieldMapping type name. Used when writing/reading from disk. More... | |
virtual bool | isIdentical (FieldMapping::Ptr other, double tolerance=0.0) const =0 |
Whether the mapping is identical to another mapping. More... | |
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. More... | |
void | voxelToLocal (const V3d &vsP, V3d &lsP) const |
Inverse of localToVoxel. More... | |
![]() | |
void | ref () const |
Used by boost::intrusive_pointer. More... | |
size_t | refcnt () |
Used by boost::intrusive_pointer. More... | |
void | unref () const |
Used by boost::intrusive_pointer. More... | |
WeakPtr | weakPtr () const |
RefBase () | |
RefBase (const RefBase &) | |
Copy constructor. More... | |
RefBase & | operator= (const RefBase &) |
Assignment operator. More... | |
virtual | ~RefBase () |
Destructor. More... | |
virtual bool | checkRTTI (const char *typenameStr)=0 |
This function is only implemented by concrete classes and triggers the actual RTTI check through matchRTTI();. More... | |
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. More... | |
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. More... | |
V3d | m_res |
The integer voxel-space resolution of the underlying Field object. Is equal to field.extents.max - field.extents.min + 1. More... | |
Private Types | |
typedef RefBase | base |
Convenience typedef for referring to base class. More... | |
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).
Definition at line 86 of file FieldMapping.h.
typedef boost::intrusive_ptr<FieldMapping> FieldMapping::Ptr |
Definition at line 92 of file FieldMapping.h.
typedef FieldMapping FieldMapping::class_type |
Definition at line 96 of file FieldMapping.h.
|
private |
Convenience typedef for referring to base class.
Definition at line 200 of file FieldMapping.h.
FieldMapping::FieldMapping | ( | ) |
Constructor.
Definition at line 113 of file FieldMapping.cpp.
FieldMapping::FieldMapping | ( | const Box3i & | extents | ) |
Construct with known extents.
Definition at line 123 of file FieldMapping.cpp.
References setExtents().
|
virtual |
|
inlinestatic |
Definition at line 99 of file FieldMapping.h.
Referenced by className(), and NullFieldMapping::className().
void FieldMapping::setExtents | ( | const Box3i & | extents | ) |
This sets the field extents information to use for defining the local coordinate space.
Definition at line 146 of file FieldMapping.cpp.
References extentsChanged(), m_origin, and m_res.
Referenced by FieldMapping().
|
inline |
Returns the origin.
Definition at line 128 of file FieldMapping.h.
|
inline |
Returns the resolution.
Definition at line 131 of file FieldMapping.h.
References worldToVoxel().
|
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.
Referenced by FrustumFieldMapping::farPlane(), NullFieldMapping::wsVoxelSize(), and MatrixFieldMapping::wsVoxelSize().
Transform from world space position into voxel space.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane().
|
pure virtual |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Transform from voxel space position into world space.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane().
|
pure virtual |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Transform from world space position into local space.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane().
|
pure virtual |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Transform from local space position into world space.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane().
|
pure virtual |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
|
pure virtual |
Returns world-space size of a voxel at the specified coordinate.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane().
|
inlinevirtual |
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.
References isIdentical().
Referenced by FrustumFieldMapping::farPlane(), MatrixFieldMapping::localToWorldDir(), and setExtents().
|
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.
References staticClassType().
Referenced by FrustumFieldMapping::farPlane(), NullFieldMapping::localToWorld(), and MatrixFieldMapping::localToWorldDir().
|
pure virtual |
Whether the mapping is identical to another mapping.
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Referenced by FrustumFieldMapping::farPlane(), NullFieldMapping::localToWorld(), and MatrixFieldMapping::localToWorldDir().
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.
References m_origin, and m_res.
Referenced by NullFieldMapping::worldToVoxel(), and FrustumFieldMapping::worldToVoxel().
Inverse of localToVoxel.
Definition at line 162 of file FieldMapping.cpp.
References FIELD3D_LERPFACTOR, m_origin, and m_res.
Referenced by NullFieldMapping::voxelToWorld(), and FrustumFieldMapping::voxelToWorld().
FieldMapping::DEFINE_FIELD_RTTI_ABSTRACT_CLASS |
Definition at line 97 of file FieldMapping.h.
|
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(), MatrixFieldMapping::getLocalToVoxelMatrix(), FrustumFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), setExtents(), voxelToLocal(), and FrustumFieldMapping::wsVoxelSize().
|
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(), MatrixFieldMapping::getLocalToVoxelMatrix(), FrustumFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), setExtents(), voxelToLocal(), and FrustumFieldMapping::wsVoxelSize().