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 |
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. | |
Static Public Member Functions | |
static const char * | classType () |
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. |
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 |
Reimplemented from RefBase.
Reimplemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Definition at line 92 of file FieldMapping.h.
typedef FieldMapping FieldMapping::class_type |
Reimplemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Definition at line 96 of file FieldMapping.h.
typedef RefBase FieldMapping::base [private] |
Convenience typedef for referring to base class.
Reimplemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Definition at line 200 of file FieldMapping.h.
FieldMapping::FieldMapping | ( | const Box3i & | extents | ) |
Construct with known extents.
Definition at line 119 of file FieldMapping.cpp.
References setExtents().
: RefBase() { setExtents(extents); }
FieldMapping::~FieldMapping | ( | ) | [virtual] |
static const char* FieldMapping::classType | ( | ) | [inline, static] |
Reimplemented from RefBase.
Reimplemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
Definition at line 99 of file FieldMapping.h.
Referenced by className().
{ return "FieldMapping"; }
void FieldMapping::setExtents | ( | const Box3i & | extents | ) |
This sets the field extents information to use for defining the local coordinate space.
Definition at line 142 of file FieldMapping.cpp.
References extentsChanged(), m_origin, and m_res.
Referenced by FieldMapping().
{ m_origin = extents.min; m_res = extents.max - extents.min + V3i(1); extentsChanged(); }
const V3d& FieldMapping::origin | ( | ) | const [inline] |
Returns the origin.
Definition at line 128 of file FieldMapping.h.
References m_origin.
{ return m_origin; }
const V3d& FieldMapping::resolution | ( | ) | const [inline] |
Returns the resolution.
Definition at line 131 of file FieldMapping.h.
References m_res.
{ return m_res; }
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.
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.
virtual void FieldMapping::worldToVoxel | ( | const V3d & | wsP, |
V3d & | vsP, | ||
float | time | ||
) | const [pure virtual] |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
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.
virtual void FieldMapping::voxelToWorld | ( | const V3d & | vsP, |
V3d & | wsP, | ||
float | time | ||
) | const [pure virtual] |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
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.
virtual void FieldMapping::worldToLocal | ( | const V3d & | wsP, |
V3d & | lsP, | ||
float | time | ||
) | const [pure virtual] |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
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.
virtual void FieldMapping::localToWorld | ( | const V3d & | lsP, |
V3d & | wsP, | ||
float | time | ||
) | const [pure virtual] |
Implemented in FrustumFieldMapping, MatrixFieldMapping, and NullFieldMapping.
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.
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.
Referenced by setExtents().
{ /* Empty */ }
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 135 of file FieldMapping.cpp.
References classType().
{ return std::string(classType()); }
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.
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 151 of file FieldMapping.cpp.
References m_origin, and m_res.
Referenced by NullFieldMapping::worldToVoxel(), and FrustumFieldMapping::worldToVoxel().
void FieldMapping::voxelToLocal | ( | const V3d & | vsP, |
V3d & | lsP | ||
) | const |
Inverse of localToVoxel.
Definition at line 158 of file FieldMapping.cpp.
References FIELD3D_LERPFACTOR, m_origin, and m_res.
Referenced by NullFieldMapping::voxelToWorld(), and FrustumFieldMapping::voxelToWorld().
{ 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); }
Definition at line 97 of file FieldMapping.h.
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(), MatrixFieldMapping::getLocalToVoxelMatrix(), FrustumFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), origin(), setExtents(), voxelToLocal(), and FrustumFieldMapping::wsVoxelSize().
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(), MatrixFieldMapping::getLocalToVoxelMatrix(), FrustumFieldMapping::getLocalToVoxelMatrix(), localToVoxel(), resolution(), setExtents(), voxelToLocal(), NullFieldMapping::wsVoxelSize(), and FrustumFieldMapping::wsVoxelSize().