Woolz Image Processing
Version 1.8.3
|
Utility functions for 2D and 3D graph based conforming simplical meshes. More...
Functions | |
double | WlzCMeshElmMaxSqEdgLen2D (WlzCMeshElm2D *elm) |
Computes the mesh maximum edge length of the given element. More... | |
double | WlzCMeshElmMaxSqEdgLen2D5 (WlzCMeshElm2D5 *elm) |
Computes the mesh maximum edge length of the given element. More... | |
double | WlzCMeshElmMaxSqEdgLen3D (WlzCMeshElm3D *elm) |
Computes the mesh maximum edge length of the given element. More... | |
void | WlzCMeshUpdateMaxSqEdgLen2D (WlzCMesh2D *mesh) |
Computes the mesh maximum edge length which is used to terminate vertex location. This should not be allowed to become less than the actual maximum edge length or vertex location may fail, also if it is far larger than the actual maximum edge length then vertex location will be inefficient when vertices are outside the mesh. More... | |
void | WlzCMeshUpdateMaxSqEdgLen2D5 (WlzCMesh2D5 *mesh) |
Computes the mesh maximum edge length which is used to terminate vertex location. This should not be allowed to become less than the actual maximum edge length or vertex location may fail, also if it is far larger than the actual maximum edge length then vertex location will be inefficient when vertices are outside the mesh. More... | |
void | WlzCMeshUpdateMaxSqEdgLen3D (WlzCMesh3D *mesh) |
Computes the mesh maximum edge length which is used to terminate vertex location. This should not be allowed to become less than the actual maximum edge length or vertex location may fail, also if it is far larger than the actual maximum edge length then vertex location will be inefficient when vertices are outside the mesh. More... | |
void | WlzCMeshUpdateBBox2D (WlzCMesh2D *mesh) |
Updates the bounding box of the 2D conforming mesh. More... | |
void | WlzCMeshUpdateBBox2D5 (WlzCMesh2D5 *mesh) |
Updates the bounding box of the 2D5 conforming mesh. More... | |
void | WlzCMeshUpdateBBox3D (WlzCMesh3D *mesh) |
Updates the bounding box of the 3D conforming mesh. More... | |
void | WlzCMeshSetNodFlags (WlzCMeshP mesh, unsigned int flags) |
Sets the node flags for all valid nodes of the mesh. More... | |
void | WlzCMeshSetNodFlags2D (WlzCMesh2D *mesh, unsigned int flags) |
Sets node flags for all valid nodes of the 2D mesh. More... | |
void | WlzCMeshSetNodFlags3D (WlzCMesh3D *mesh, unsigned int flags) |
Sets node flags for all valid nodes of the 3D mesh. More... | |
void | WlzCMeshClearNodFlags (WlzCMeshP mesh, unsigned int flags) |
Clears the node flags for all valid nodes of the mesh. More... | |
void | WlzCMeshClearNodFlags2D (WlzCMesh2D *mesh, unsigned int flags) |
Clears node flags for all valid nodes of the 2D mesh. More... | |
void | WlzCMeshClearNodFlags3D (WlzCMesh3D *mesh, unsigned int flags) |
Clears node flags for all valid nodes of the 3D mesh. More... | |
void | WlzCMeshClearElmFlags (WlzCMeshP mesh, unsigned int flags) |
Clears the element flags for all valid elements of the mesh. More... | |
void | WlzCMeshClearElmFlags2D (WlzCMesh2D *mesh, unsigned int flags) |
Clears element flags for all valid elements of the 2D mesh. More... | |
void | WlzCMeshClearElmFlags3D (WlzCMesh3D *mesh, unsigned int flags) |
Clears element flags for all valid elements of the 3D mesh. More... | |
int | WlzCMeshSetBoundNodFlags (WlzCMeshP mesh) |
Sets or clears the boundary node flag bit for all nodes of the mesh. More... | |
int | WlzCMeshSetBoundNodFlags2D (WlzCMesh2D *mesh) |
Sets or clears the boundary node flag bit for all nodes of the 2D mesh. More... | |
int | WlzCMeshSetBoundNodFlags2D5 (WlzCMesh2D5 *mesh) |
Sets or clears the boundary node flag bit for all nodes of the 2D5 mesh. More... | |
int | WlzCMeshSetBoundNodFlags3D (WlzCMesh3D *mesh) |
Sets or clears the boundary node flag bit for all nodes of the 3D mesh. More... | |
WlzErrorNum | WlzCMeshGetBoundNodes (WlzCMeshP mesh, int *dstNNod, int **dstNod) |
Gets the indeces of the boundary nodes of the mesh. The boundary nodes will be unordered. More... | |
WlzErrorNum | WlzCMeshGetBoundNodes2D (WlzCMesh2D *mesh, int *dstNNod, int **dstNod) |
Gets the indeces of the boundary nodes of the 2D mesh. More... | |
WlzErrorNum | WlzCMeshGetBoundNodes2D5 (WlzCMesh2D5 *mesh, int *dstNNod, int **dstNod, int ordered) |
Gets the indices of the boundary nodes of the 2D5 mesh. More... | |
WlzErrorNum | WlzCMeshGetBoundNodes3D (WlzCMesh3D *mesh, int *dstNNod, int **dstNod) |
Gets the indeces of the boundary nodes of the 3D mesh. More... | |
int | WlzCMeshCountBoundNodes (WlzCMeshP mesh) |
Counts the number of boundary nodes of the mesh. More... | |
int | WlzCMeshCountBoundNodes2D (WlzCMesh2D *mesh) |
Counts the number of boundary nodes of the 2D mesh. More... | |
int | WlzCMeshCountBoundNodes2D5 (WlzCMesh2D5 *mesh) |
Counts the number of boundary nodes of the 2D5 mesh. More... | |
int | WlzCMeshCountBoundNodes3D (WlzCMesh3D *mesh) |
Counts the number of boundary nodes of the 3D mesh. More... | |
int | WlzCMeshSetBoundElmFlags (WlzCMeshP mesh) |
Sets or clears the boundary element flag bit for all elements of the mesh. More... | |
int | WlzCMeshSetBoundElmFlags2D (WlzCMesh2D *mesh) |
Sets or clears the boundary element flag bit for all elements of the 2D mesh. More... | |
int | WlzCMeshSetBoundElmFlags3D (WlzCMesh3D *mesh) |
Sets or clears the boundary element flag bit for all elements of the 3D mesh. More... | |
int | WlzCMeshNodIsBoundary2D (WlzCMeshNod2D *nod) |
Checks whether the node is a boundary node by examining the edges which use the node. If one of these edges does not have an opposite edge (other than itself) the node is a boundary node. More... | |
int | WlzCMeshNodIsBoundary2D5 (WlzCMeshNod2D5 *nod) |
Checks whether the node is a boundary node by examining the edges which use the node. If one of these edges does not have an opposite edge (other than itself) the node is a boundary node. More... | |
int | WlzCMeshNodIsBoundary3D (WlzCMeshNod3D *nod) |
Checks whether the node is a boundary node by examining the faces which use the node. If one of these faces does not have an opposite face (other than itself) the node is a boundary node. More... | |
int | WlzCMeshElmIsBoundary2D (WlzCMeshElm2D *elm) |
Checks whether the element is a boundary node by examining the edges for opposite edges. More... | |
int | WlzCMeshElmIsBoundary3D (WlzCMeshElm3D *elm) |
Checks whether the element is a boundary node by examining the faces for opposite faces. More... | |
WlzErrorNum | WlzCMeshLaplacianSmooth (WlzCMeshP mesh, int itr, double alpha, int doBnd, int update) |
Applies a Laplacian smoothing to the 2D mesh in which nodes are iteratively moved to the centroid of their imediate neighbours. If a node is on a boundary of the mesh then it is moved on the boundary, ie to the centroid of it's neighboring boundary nodes. Before calling this function all nodes must have had the boundary node flag bit set or cleared appropriately. This function will shrink meshes when the boundary parameter is set. More... | |
WlzErrorNum | WlzCMeshLaplacianSmooth2D (WlzCMesh2D *mesh, int itr, double alpha, int doBnd, int update) |
Applies a Laplacian smoothing to the 2D mesh in which nodes are iteratively moved to the centroid of their imediate neighbours. See WlzCMeshLaplacianSmooth(). More... | |
WlzErrorNum | WlzCMeshLaplacianSmooth3D (WlzCMesh3D *mesh, int itr, double alpha, int doBnd, int update) |
Applies a Laplacian smoothing to the 3D mesh in which nodes are iteratively moved to the centroid of their imediate neighbours. See WlzCMeshLaplacianSmooth(). More... | |
WlzErrorNum | WlzCMeshLPFilter (WlzCMeshP mesh, double kPB, double kSB, double dPB, double dSB, int maxItr, int doBnd, int update) |
Applies a low pass filter to the mesh in which nodes are moved. If a node is on a boundary of the mesh then it is moved on the boundary. Before calling this function all nodes must have had the boundary node flag bit set or cleared appropriately. This function should not significantly shrink meshes because it applies a low pass filter. More... | |
WlzErrorNum | WlzCMeshLPFilterLM (WlzCMeshP mesh, double lambda, double mu, int nItr, int doBnd, int update) |
Applies a low pass filter to the geometry of the given mesh. See WlzGMFilterGeomLPLM(). This will change the boundary node/element flags. More... | |
WlzErrorNum | WlzCMeshSetVertices (WlzCMeshP mesh, WlzVertexP vtxBuf, int update) |
Sets the position of all valid nodes in the mesh. The mesh will still need to have it's bounding box, maximum edge length and grid box set after this function has repositioned the nodes. Vertex type must be correct for mesh type, ie WlzDVertex2 for WlzCMesh2D and WlzDVertex3 for WlzCMesh3D. More... | |
void | WlzCMeshSetVertices2D (WlzCMesh2D *mesh, WlzDVertex2 *vtxBuf, int update) |
Sets the position of all valid nodes in the mesh. The mesh will still need to have it's bounding box, maximum edge length and grid box set after this function has repositioned the nodes. The parameters are assumed vaild. More... | |
void | WlzCMeshSetVertices3D (WlzCMesh3D *mesh, WlzDVertex3 *vtxBuf, int update) |
Sets the position of all valid nodes in the mesh. The mesh will still need to have it's bounding box, maximum edge length and grid box set after this function has repositioned the nodes. The parameters are assumed vaild. More... | |
WlzErrorNum | WlzCMeshVerify (WlzCMeshP mesh, void **dstElm, int allErr, FILE *fP) |
Checks that the 2D or 3D mesh has valid connectivities. This function is slow and should only be used when debugging mesh connectivities - it is not intended for routine use. With an invalid mesh this checking function may provoke NULL pointer access or segmentation faults. More... | |
WlzErrorNum | WlzCMeshVerify2D (WlzCMesh2D *mesh, WlzCMeshElm2D **dstElm, int allErr, FILE *fP) |
Checks that the 2D mesh has valid connectivities. This function is slow and should only be used when debugging mesh connectivities - it is not intended for routine use. With an invalid mesh this checking function may provoke NULL pointer access or segmentation faults. More... | |
WlzErrorNum | WlzCMeshVerify2D5 (WlzCMesh2D5 *mesh, WlzCMeshElm2D5 **dstElm, int allErr, FILE *fP) |
Checks that the 2D5 mesh has valid connectivities. This function is slow and should only be used when debugging mesh connectivities - it is not intended for routine use. With an invalid mesh this checking function may provoke NULL pointer access or segmentation faults. More... | |
WlzErrorNum | WlzCMeshVerify3D (WlzCMesh3D *mesh, WlzCMeshElm3D **dstElm, int allErr, FILE *fP) |
Checks that the 3D mesh has valid connectivities. This function is slow and should only be used when debugging mesh connectivities - it is not intended for routine use. With an invalid mesh this checking function may provoke NULL pointer access or segmentation faults. More... | |
WlzErrorNum | WlzCMeshCmpElmFeat (WlzCMeshP mesh, int *dstNElm, int **dstIdx, double **dstVol, double **dstMinLen, double **dstMaxLen) |
Computes some simple geometric features of all valid elements in a mesh. More... | |
WlzErrorNum | WlzCMeshCmpElmFeat2D (WlzCMesh2D *mesh, int *dstNElm, int **dstIdx, double **dstVol, double **dstMinLen, double **dstMaxLen) |
Computes some simple geometric features of all valid elements in a 2D mesh. More... | |
WlzErrorNum | WlzCMeshCmpElmFeat3D (WlzCMesh3D *mesh, int *dstNElm, int **dstIdx, double **dstVol, double **dstMinLen, double **dstMaxLen) |
Computes some simple geometric features of all valid elements in a 3D mesh. More... | |
double | WlzCMeshElmSnArea22D (WlzCMeshElm2D *elm) |
Computes twice the signed area of the 2D mesh element. More... | |
double | WlzCMeshElmSqArea22D5 (WlzCMeshElm2D5 *elm) |
Computes twice the square of te area of the 2D5 mesh element. More... | |
double | WlzCMeshElmSnVolume63D (WlzCMeshElm3D *elm) |
Computes six times the signed volume of the 3D mesh element. More... | |
void | WlzCMeshElmGetNodes2D (WlzCMeshElm2D *elm, WlzCMeshNod2D **dstNod0, WlzCMeshNod2D **dstNod1, WlzCMeshNod2D **dstNod2) |
Gets the three nodes of a 2D element. More... | |
void | WlzCMeshElmGetNodes2D5 (WlzCMeshElm2D5 *elm, WlzCMeshNod2D5 **dstNod0, WlzCMeshNod2D5 **dstNod1, WlzCMeshNod2D5 **dstNod2) |
Gets the three nodes of a 2D5 element. More... | |
void | WlzCMeshElmGetNodes3D (WlzCMeshElm3D *elm, WlzCMeshNod3D **dstNod0, WlzCMeshNod3D **dstNod1, WlzCMeshNod3D **dstNod2, WlzCMeshNod3D **dstNod3) |
Gets the four nodes of a 3D element. More... | |
WlzDBox2 | WlzCMeshElmBBox2D (WlzCMeshElm2D *elm) |
Gets the axis aligned bounding box of a 2D element. More... | |
WlzDBox3 | WlzCMeshElmBBox2D5 (WlzCMeshElm2D5 *elm) |
Gets the axis aligned bounding box of a 3D element. More... | |
WlzDBox3 | WlzCMeshElmBBox3D (WlzCMeshElm3D *elm) |
Gets the axis aligned bounding box of a 3D element. More... | |
int | WlzCMeshElmUseNod3D (WlzCMeshNod3D *gNod, int *gMaxElm, int **gElmIdxAry, WlzErrorNum *dstErr) |
Finds the elements which use the given node and returns their indices in an array. The indices are unique and in acending order. The array will be resized as needed. More... | |
WlzCMeshP | WlzCMeshCopy (WlzCMeshP gvnMesh, int squeeze, size_t datSz, AlcVector **newDat, AlcVector *gvnDat, WlzErrorNum *dstErr) |
Creates a copy of the given constrained mesh. If the squeeze flag is set then the copy will have all invalid (deleted) entities squeezed out so that the mew mesh will only have valid mesh entities that are contiguous and start with index 0. As well as copying the given mesh this function will also copy data associated with the nodes of the mesh. The associated data are held in AlcVector data structures and are indexed using the node index. If (datSz == 0) || (newDat == NULL) || (gvnDat == NULL) then the associated data will be ignored. More... | |
WlzCMesh2D * | WlzCMeshCopy2D (WlzCMesh2D *gvnMesh, int squeeze, size_t datSz, AlcVector **newDat, AlcVector *gvnDat, WlzErrorNum *dstErr) |
Creates a copy of the given constrained mesh. If the squeeze flag is set then the copy will have all invalid (deleted) entities squeezed out so that the mew mesh will only have valid mesh entities that are contiguous and start with index 0. As well as copying the given mesh this function will also copy data associated with the nodes of the mesh. The associated data are held in AlcVector data structures and are indexed using the node index. If (datSz == 0) || (newDat == NULL) || (gvnDat == NULL) then the associated data will be ignored. More... | |
WlzCMesh2D5 * | WlzCMeshCopy2D5 (WlzCMesh2D5 *gvnMesh, int squeeze, size_t datSz, AlcVector **newDat, AlcVector *gvnDat, WlzErrorNum *dstErr) |
Creates a copy of the given constrained mesh. If the squeeze flag is set then the copy will have all invalid (deleted) entities squeezed out so that the mew mesh will only have valid mesh entities that are contiguous and start with index 0. As well as copying the given mesh this function will also copy data associated with the nodes of the mesh. The associated data are held in AlcVector data structures and are indexed using the node index. If (datSz == 0) || (newDat == NULL) || (gvnDat == NULL) then the associated data will be ignored. More... | |
WlzCMesh3D * | WlzCMeshCopy3D (WlzCMesh3D *gvnMesh, int squeeze, size_t datSz, AlcVector **newDat, AlcVector *gvnDat, WlzErrorNum *dstErr) |
Creates a copy of the given constrained mesh. If the squeeze flag is set then the copy will have all invalid (deleted) entities squeezed out so that the mew mesh will only have valid mesh entities that are contiguous and start with index 0. As well as copying the given mesh this function will also copy data associated with the nodes of the mesh. The associated data are held in AlcVector data structures and are indexed using the node index. If (datSz == 0) || (newDat == NULL) || (gvnDat == NULL) then the associated data will be ignored. More... | |
WlzErrorNum | WlzCMeshFixNegativeElms (WlzCMeshP mesh) |
Reorders nodes in any elements which have negative area. More... | |
WlzErrorNum | WlzCMeshFixNegativeElms2D (WlzCMesh2D *mesh) |
Reorders nodes in any elements which have negative area. More... | |
WlzErrorNum | WlzCMeshFixNegativeElms3D (WlzCMesh3D *mesh) |
Reorders nodes in any elements which have negative area. More... | |
void | WlzCMeshGetCellStats (WlzCMeshP mesh, int *dstMinNodPerCell, int *dstMaxNodPerCell, double *dstMeanNodPerCell, int *dstMinElmPerCell, int *dstMaxElmPerCell, double *dstMeanElmPerCell) |
Computes simple mesh node and element grid cell location statistics. This function is probably only useful for optimising the number of location cells allocated. More... | |
void | WlzCMeshGetCellStats2D (WlzCMesh2D *mesh, int *dstMinNodPerCell, int *dstMaxNodPerCell, double *dstMeanNodPerCell, int *dstMinElmPerCell, int *dstMaxElmPerCell, double *dstMeanElmPerCell) |
Computes simple 2D mesh node and element grid cell location statistics. This function is probably only useful for optimising the number of location cells allocated. More... | |
void | WlzCMeshGetCellStats3D (WlzCMesh3D *mesh, int *dstMinNodPerCell, int *dstMaxNodPerCell, double *dstMeanNodPerCell, int *dstMinElmPerCell, int *dstMaxElmPerCell, double *dstMeanElmPerCell) |
Computes simple 3D mesh node and element grid cell location statistics. This function is probably only useful for optimising the number of location cells allocated. More... | |
int * | WlzCMeshMakeNodIdxTbl2D (WlzCMesh2D *mesh, int *dstNNod) |
Allocates and populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table is the maximum number of nodes allocated in the mesh. More... | |
int * | WlzCMeshMakeNodIdxTbl2D5 (WlzCMesh2D5 *mesh, int *dstNNod) |
Allocates and populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table is the maximum number of nodes allocated in the mesh. More... | |
int * | WlzCMeshMakeNodIdxTbl3D (WlzCMesh3D *mesh, int *dstNNod) |
Allocates and populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table is the maximum number of nodes allocated in the mesh. More... | |
int | WlzCMeshSetNodIdxTbl2D (WlzCMesh2D *mesh, int *idxTb) |
Populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table must be at least the maximum number of nodes allocated in the mesh. More... | |
int | WlzCMeshSetNodIdxTbl2D5 (WlzCMesh2D5 *mesh, int *idxTb) |
Populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table must be at least the maximum number of nodes allocated in the mesh. More... | |
int | WlzCMeshSetNodIdxTbl3D (WlzCMesh3D *mesh, int *idxTb) |
Populates a node look up table which maps node indices to the range 0 - (n nodes - 1). The size of the look up table must be at least the maximum number of nodes allocated in the mesh. More... | |
int * | WlzCMeshMakeElmIdxTbl2D (WlzCMesh2D *mesh, int *dstNElm) |
Allocates and populates an element look up table which maps element indices to the range 0 - (n elements - 1). The size of the look up table is the maximum number of elements allocated in the mesh. More... | |
int * | WlzCMeshMakeElmIdxTbl2D5 (WlzCMesh2D5 *mesh, int *dstNElm) |
Allocates and populates an element look up table which maps element indices to the range 0 - (n elements - 1). The size of the look up table is the maximum number of elements allocated in the mesh. More... | |
int * | WlzCMeshMakeElmIdxTbl3D (WlzCMesh3D *mesh, int *dstNElm) |
Allocates and populates an element look up table which maps element indices to the range 0 - (n elements - 1). The size of the look up table is the maximum number of elements allocated in the mesh. More... | |
int | WlzCMeshSetElmIdxTbl2D (WlzCMesh2D *mesh, int *idxTb) |
Populates a element look up table which maps ellement indices to the range 0 - (n elements - 1). The size of the look up table must be at least the maximum number of elements allocated in the mesh. More... | |
int | WlzCMeshSetElmIdxTbl2D5 (WlzCMesh2D5 *mesh, int *idxTb) |
Populates a element look up table which maps ellement indices to the range 0 - (n elements - 1). The size of the look up table must be at least the maximum number of elements allocated in the mesh. More... | |
int | WlzCMeshSetElmIdxTbl3D (WlzCMesh3D *mesh, int *idxTb) |
Populates a element look up table which maps ellement indices to the range 0 - (n elements - 1). The size of the look up table must be at least the maximum number of elements allocated in the mesh. More... | |
int | WlzCMeshNodNbrCnt2D5 (WlzCMeshNod2D5 *nod) |
Computes the number of nodes directly connected to the given node. More... | |
int | WlzCMeshNodRingNodIndices2D (WlzCMeshNod2D *nod, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the nodes that form a ring or partial rings around the given node. Where members of the ring are the immediate neighbours of the given node. The given node's index will always be the first in the buffer but the remainder of the node indices may be unsorted. More... | |
int | WlzCMeshNodRingNodIndices2D5 (WlzCMeshNod2D5 *nod, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the nodes that form a ring or partial rings around the given node. Where members of the ring are the immediate neighbours of the given node. The given node's index will always be the first in the buffer but the remainder of the node indices may be unsorted. More... | |
int | WlzCMeshNodRingNodIndices3D (WlzCMeshNod3D *nod, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the nodes that form a ring or partial rings around the given node. Where members of the ring are the immediate neighbours of the given node. The given node's index will always be the first in the buffer but the remainder of the node indices may be unsorted. More... | |
int | WlzCMeshNodRingElmIndices2D5 (WlzCMeshNod2D5 *nod, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the elements that form a ring or partial rings around the given node. Where members of the ring are immediate neighbours of the given node. The element indices may be unsorted. More... | |
int | WlzCMeshElmRingNodIndices2D (WlzCMeshElm2D *elm, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the nodes that form a ring or partial rings around the given element. Where members of the ring are the nodes of the element followed by the immediate edge neighbours of these nodes. The node indices may be unsorted (apart from the element nodes being first and in edge use order) but they will not have duplicates. More... | |
int | WlzCMeshElmRingElmIndices2D (WlzCMeshElm2D *elm, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the elements that form a ring around (ie are directly connected to) the given element. The element indices will be partially ordered with the given element's index first, followed by edge connected neighbouring elements and then the remaining node only connected elements. There will not be duplicates. More... | |
int | WlzCMeshElmRingElmIndices3D (WlzCMeshElm3D *elm, int *maxIdxBuf, int **idxBuf, WlzErrorNum *dstErr) |
Gathers the indices of the elements that form a ring around (ie are directly connected to) the given element. The element indices will be partially ordered with the given element's index first, followed by face connected neighbouring elements and then the remaining node or edge only connected elements. There will not be duplicates. More... | |
WlzErrorNum | WlzCMeshValuesNormalise (WlzObject *cObj, int mapZero, double vZero, double vMin, double vMax, double oFrac) |
Given a conforming mesh with attached values; this function normalises the values to the given range in place. If the zero value is not mapped to a given value explicitly then the the output values will be given using: \[ V = \frac{U - L}{u - l} (v - l) + L \] otherwise with the zero value explicitly mapped the values will be \[ \begin{array}{l} f = \min{\frac{U - V_0}{u}, \frac{L - V_0}{l}} \\ V = f v + V_0 \end{array} \] Here \(U\) and \(L\) are the required maximum and minimum values on return, \(u\) and \(l\) are the given mesh maximum and minimum values, \(v\) is a given value and \(V\) is a returned value. \(V_0\) is the returned value corresponding to the given value of zero. More... | |
WlzUByte * | WlzCMeshIndexMaskFromValueRange (WlzObject *obj, double lo, double hi, int in, WlzErrorNum *dstErr) |
Allocates and array of byte values and then sets these to non-zero values for the conforming mesh value indices where the values satisfy the given range test. If either the lower or upper limit is NaN then the test is simply for the conforming meshes values being NaN. More... | |
Utility functions for 2D and 3D graph based conforming simplical meshes.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.