HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SIM_FieldUtils.h File Reference
#include <GU/GU_Types.h>
#include "SIM_ScalarField.h"
#include "SIM_MatrixField.h"
#include "SIM_VectorField.h"
#include "SIM_IndexField.h"
+ Include dependency graph for SIM_FieldUtils.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 SIM
 
 SIM::FieldUtils
 

Functions

template<typename Functor >
void SIM::FieldUtils::forEachVoxelRange (const UT_Vector3I &start, const UT_Vector3I &end, const Functor &f)
 
SYS_FORCE_INLINE void SIM::FieldUtils::setFieldValue (SIM_RawField &field, const UT_Vector3I &cell, fpreal32 value)
 
SYS_FORCE_INLINE fpreal32 SIM::FieldUtils::getFieldValue (const SIM_RawField &field, const UT_Vector3I &cell)
 
SYS_FORCE_INLINE void SIM::FieldUtils::setFieldValue (SIM_RawIndexField &field, const UT_Vector3I &cell, exint value)
 
SYS_FORCE_INLINE exint SIM::FieldUtils::getFieldValue (const SIM_RawIndexField &field, const UT_Vector3I &cell)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::cellToFaceMap (const UT_Vector3I &cell, const int axis, const int direction)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::cellToCellMap (const UT_Vector3I &cell, const int axis, const int direction)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::cellToEdgeMap (const UT_Vector3I &cell, const int edge_axis, const int edge_index)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::cellToNodeMap (const UT_Vector3I &cell, const int node_index)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::faceToCellMap (const UT_Vector3I &face, const int axis, const int direction)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::faceToEdgeMap (const UT_Vector3I &face, const int face_axis, const int edge_axis, const int direction)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::faceToNodeMap (const UT_Vector3I &face, const int face_axis, const int node_index)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::edgeToFaceMap (const UT_Vector3I &edge, const int edge_axis, const int face_axis, const int direction)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::edgeToCellMap (const UT_Vector3I &edge, const int edge_axis, const int cell_index)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::nodeToFaceMap (const UT_Vector3I &node, const int face_axis, const int face_index)
 
SYS_FORCE_INLINE UT_Vector3I SIM::FieldUtils::nodeToCellMap (const UT_Vector3I &node, const int cell_index)
 
bool SIMfieldUtilsComputeSliceWithBorder (const UT_Vector3 &slice, const UT_Vector3 &totaldiv, UT_Vector3 overlapneg, UT_Vector3 overlappos, int slicenum, UT_Vector3 &minvxl, UT_Vector3 &maxvxl)
 
template<typename FIELDTYPE >
bool SIMfieldUtilsComputeSliceWithBorder (const FIELDTYPE *field, const UT_Vector3 &totaldiv, UT_Vector3 overlapneg, UT_Vector3 overlappos, int slicenum, UT_Vector3 &minvxl, UT_Vector3 &maxvxl)
 
template<typename FIELDTYPE >
bool SIMfieldUtilsComputeSlice (const FIELDTYPE *field, const UT_Vector3 &totaldiv, int slicenum, UT_Vector3 &minvxl, UT_Vector3 &maxvxl)
 
template<typename FIELDTYPE >
bool SIMfieldUtilsGetSliceBorder (const FIELDTYPE *field, int a_slice, int b_slice, UT_Vector3 &minvxl, UT_Vector3 &maxvxl)
 
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetDivisionsNoSlice (const FIELDTYPE *field)
 
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetDivisions (const FIELDTYPE *field)
 
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetSizeNoSlice (const FIELDTYPE *field)
 
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetSize (const FIELDTYPE *field)
 
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetCenter (const FIELDTYPE *field)
 
template<typename FIELDTYPE , typename F2 >
void SIMfieldUtilsMatch (FIELDTYPE *field, const F2 *srcfield)
 
void SIMfieldUtilsStealFields (SIM_RawIndexField **raw, SIM_IndexField *field)
 
void SIMfieldUtilsStealFields (SIM_RawField **raw, SIM_ScalarField *field)
 
void SIMfieldUtilsStealFields (SIM_RawField **raw, SIM_VectorField *field)
 
void SIMfieldUtilsStealFields (SIM_RawField **raw, SIM_MatrixField *field)
 
template<typename RAWFIELD >
void SIMfieldUtilsExchangeFields (const char *address, int port, RAWFIELD *dest, RAWFIELD *src, int slicenum, int offx, int offy, int offz, UT_Vector3 olddiv, UT_Vector3 newdiv, UT_Vector3 slicediv, UT_Vector3 overlapneg, UT_Vector3 overlappos)
 
void SIMfieldUtilsCopyWithOffset (SIM_IndexField *field, SIM_RawIndexField **raw, int offx, int offy, int offz, bool keepdata, UT_Vector3 olddivvec, UT_Vector3 newdivvec, const char *address, int port)
 
void SIMfieldUtilsCopyWithOffset (SIM_ScalarField *field, SIM_RawField **raw, int offx, int offy, int offz, bool keepdata, UT_Vector3 olddivvec, UT_Vector3 newdivvec, const char *address, int port)
 
void SIMfieldUtilsCopyWithOffset (SIM_VectorField *field, SIM_RawField **raw, int offx, int offy, int offz, bool keepdata, UT_Vector3 olddivvec, UT_Vector3 newdivvec, const char *address, int port)
 
void SIMfieldUtilsCopyWithOffset (SIM_MatrixField *field, SIM_RawField **raw, int offx, int offy, int offz, bool keepdata, UT_Vector3 olddivvec, UT_Vector3 newdivvec, const char *address, int port)
 
template<typename FIELDTYPE >
void SIMfieldUtilsResizeKeepDataAndSnap (FIELDTYPE *field, UT_Vector3 size, UT_Vector3 center, bool keepdata, const char *address, int port, bool &snapvalid, UT_Vector3 &snapsize, UT_Vector3 &snapcenter)
 
template<typename FIELDTYPE >
void SIMfieldUtilsResizeKeepData (FIELDTYPE *field, UT_Vector3 size, UT_Vector3 center, bool keepdata, const char *address, int port)
 
template<typename FIELDTYPE1 , typename FIELDTYPE2 >
bool SIMfieldUtilsIsColocated (const FIELDTYPE1 *field1, const FIELDTYPE2 *field2, UT_Vector3I &offset)
 

Function Documentation

template<typename FIELDTYPE >
bool SIMfieldUtilsComputeSlice ( const FIELDTYPE *  field,
const UT_Vector3 totaldiv,
int  slicenum,
UT_Vector3 minvxl,
UT_Vector3 maxvxl 
)

Definition at line 377 of file SIM_FieldUtils.h.

bool SIMfieldUtilsComputeSliceWithBorder ( const UT_Vector3 slice,
const UT_Vector3 totaldiv,
UT_Vector3  overlapneg,
UT_Vector3  overlappos,
int  slicenum,
UT_Vector3 minvxl,
UT_Vector3 maxvxl 
)
inline

Returns true if there is a slice to be performed. The slice is the half inclusive interval [minvxl, maxvxl)

Definition at line 292 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
bool SIMfieldUtilsComputeSliceWithBorder ( const FIELDTYPE *  field,
const UT_Vector3 totaldiv,
UT_Vector3  overlapneg,
UT_Vector3  overlappos,
int  slicenum,
UT_Vector3 minvxl,
UT_Vector3 maxvxl 
)

Definition at line 367 of file SIM_FieldUtils.h.

void SIMfieldUtilsCopyWithOffset ( SIM_IndexField field,
SIM_RawIndexField **  raw,
int  offx,
int  offy,
int  offz,
bool  keepdata,
UT_Vector3  olddivvec,
UT_Vector3  newdivvec,
const char *  address,
int  port 
)
inline

Definition at line 757 of file SIM_FieldUtils.h.

void SIMfieldUtilsCopyWithOffset ( SIM_ScalarField field,
SIM_RawField **  raw,
int  offx,
int  offy,
int  offz,
bool  keepdata,
UT_Vector3  olddivvec,
UT_Vector3  newdivvec,
const char *  address,
int  port 
)
inline

Definition at line 792 of file SIM_FieldUtils.h.

void SIMfieldUtilsCopyWithOffset ( SIM_VectorField field,
SIM_RawField **  raw,
int  offx,
int  offy,
int  offz,
bool  keepdata,
UT_Vector3  olddivvec,
UT_Vector3  newdivvec,
const char *  address,
int  port 
)
inline

Definition at line 826 of file SIM_FieldUtils.h.

void SIMfieldUtilsCopyWithOffset ( SIM_MatrixField field,
SIM_RawField **  raw,
int  offx,
int  offy,
int  offz,
bool  keepdata,
UT_Vector3  olddivvec,
UT_Vector3  newdivvec,
const char *  address,
int  port 
)
inline

Definition at line 863 of file SIM_FieldUtils.h.

template<typename RAWFIELD >
void SIMfieldUtilsExchangeFields ( const char *  address,
int  port,
RAWFIELD *  dest,
RAWFIELD *  src,
int  slicenum,
int  offx,
int  offy,
int  offz,
UT_Vector3  olddiv,
UT_Vector3  newdiv,
UT_Vector3  slicediv,
UT_Vector3  overlapneg,
UT_Vector3  overlappos 
)
template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetCenter ( const FIELDTYPE *  field)

Definition at line 652 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetDivisions ( const FIELDTYPE *  field)

Definition at line 532 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetDivisionsNoSlice ( const FIELDTYPE *  field)

Definition at line 415 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetSize ( const FIELDTYPE *  field)

Definition at line 625 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
UT_Vector3 SIMfieldUtilsGetSizeNoSlice ( const FIELDTYPE *  field)

Definition at line 549 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
bool SIMfieldUtilsGetSliceBorder ( const FIELDTYPE *  field,
int  a_slice,
int  b_slice,
UT_Vector3 minvxl,
UT_Vector3 maxvxl 
)

Returns true if there is any overlap between the two slices. [minvxl, maxvxl) is the region of overlap. This is the intersection of the two slice fields.

Definition at line 390 of file SIM_FieldUtils.h.

template<typename FIELDTYPE1 , typename FIELDTYPE2 >
bool SIMfieldUtilsIsColocated ( const FIELDTYPE1 *  field1,
const FIELDTYPE2 *  field2,
UT_Vector3I offset 
)

Returns true if two fields have voxels aligned. They do not have to be of the same resolution or share origin. However, using the offset allows to access this field with index of the other field. i.e. field1->indexToPos(index + offset) == field2->indexToPos(index)

Definition at line 1160 of file SIM_FieldUtils.h.

template<typename FIELDTYPE , typename F2 >
void SIMfieldUtilsMatch ( FIELDTYPE *  field,
const F2 *  srcfield 
)

Definition at line 689 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
void SIMfieldUtilsResizeKeepData ( FIELDTYPE *  field,
UT_Vector3  size,
UT_Vector3  center,
bool  keepdata,
const char *  address,
int  port 
)

Definition at line 1139 of file SIM_FieldUtils.h.

template<typename FIELDTYPE >
void SIMfieldUtilsResizeKeepDataAndSnap ( FIELDTYPE *  field,
UT_Vector3  size,
UT_Vector3  center,
bool  keepdata,
const char *  address,
int  port,
bool &  snapvalid,
UT_Vector3 snapsize,
UT_Vector3 snapcenter 
)

Definition at line 904 of file SIM_FieldUtils.h.

void SIMfieldUtilsStealFields ( SIM_RawIndexField **  raw,
SIM_IndexField field 
)
inline

Definition at line 718 of file SIM_FieldUtils.h.

void SIMfieldUtilsStealFields ( SIM_RawField **  raw,
SIM_ScalarField field 
)
inline

Definition at line 724 of file SIM_FieldUtils.h.

void SIMfieldUtilsStealFields ( SIM_RawField **  raw,
SIM_VectorField field 
)
inline

Definition at line 730 of file SIM_FieldUtils.h.

void SIMfieldUtilsStealFields ( SIM_RawField **  raw,
SIM_MatrixField field 
)
inline

Definition at line 737 of file SIM_FieldUtils.h.