Field3D
FieldMapping.h File Reference

Contains the FieldMapping base class and the NullFieldMapping and MatrixFieldMapping subclasses. More...

#include <vector>
#include <algorithm>
#include "Curve.h"
#include "Exception.h"
#include "RefCount.h"
#include "Types.h"
#include "ns.h"

Go to the source code of this file.

Classes

class  FieldMapping
 Base class for mapping between world-, local- and voxel coordinates. More...
 
class  FrustumFieldMapping
 Represents the mapping of a field by a perspective transform. More...
 
class  MatrixFieldMapping
 Represents the mapping of a field by a matrix transform. More...
 
class  NullFieldMapping
 Trivial class, world space is equal to local space, i.e. the field is contained in the unit cube [0..1] in all axes. More...
 

Functions

void worldToVoxel (const Field3D::FieldMapping *mapping, const Box3d &wsBounds, Box3d &vsBounds)
 Computes a voxel space bounds given a bounding box in world space. This is done by transforming each corner vertex from world to voxel space and bounding the result. More...
 

Detailed Description

Contains the FieldMapping base class and the NullFieldMapping and MatrixFieldMapping subclasses.

Definition in file FieldMapping.h.

Function Documentation

void worldToVoxel ( const Field3D::FieldMapping *  mapping,
const Box3d wsBounds,
Box3d vsBounds 
)

Computes a voxel space bounds given a bounding box in world space. This is done by transforming each corner vertex from world to voxel space and bounding the result.

Todo:
Make this integrate over time

Definition at line 173 of file FieldMapping.cpp.

Referenced by FieldSampler< WrapperVec_T, 1 >::getMinMax(), FieldSampler< WrapperVec_T, 3 >::getMinMax(), FieldSampler< WrapperVec_T, 1 >::getMinMaxMIP(), FieldSampler< WrapperVec_T, 3 >::getMinMaxMIP(), and FieldMapping::resolution().

176 {
177  V3d test1, test2;
178  mapping->worldToVoxel(test1, test2);
180  V3d wsVerts[] = {
181  V3d(wsBounds.min.x, wsBounds.min.y, wsBounds.min.z),
182  V3d(wsBounds.max.x, wsBounds.min.y, wsBounds.min.z),
183  V3d(wsBounds.min.x, wsBounds.max.y, wsBounds.min.z),
184  V3d(wsBounds.max.x, wsBounds.max.y, wsBounds.min.z),
185  V3d(wsBounds.min.x, wsBounds.min.y, wsBounds.max.z),
186  V3d(wsBounds.max.x, wsBounds.min.y, wsBounds.max.z),
187  V3d(wsBounds.min.x, wsBounds.max.y, wsBounds.max.z),
188  V3d(wsBounds.max.x, wsBounds.max.y, wsBounds.max.z)
189  };
190  vsBounds.makeEmpty();
191  V3d vsP;
192  for (int i = 0; i < 8; i++) {
193  mapping->worldToVoxel(wsVerts[i], vsP);
194  vsBounds.extendBy(vsP);
195  }
196 }
Imath::V3d V3d
Definition: SpiMathLib.h:74