Class MiPointProbeIjk
- java.lang.Object
-
- com.openinventor.meshvizxlm.extractors.pointprobe.MiPointProbeIjk
-
- All Implemented Interfaces:
MiBaseExtractor
,MiExtractorIjk
- Direct Known Subclasses:
MiPointProbeHexahedronIjk
public abstract class MiPointProbeIjk extends java.lang.Object implements MiExtractorIjk
Probe at a given location in a structured volume mesh.This class can be used to evaluate the value of a data set in the given mesh at any location. The probe is internally building an octree onto volume meshes.
This octree can be optimized by setting three environment variables (seeSoPreferences
andMiPointProbeUnstructured
).
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract int[]
getCellId()
Gets the ids of the cell of the mesh containing the current location of the probe.static <T extends MiTopologyIjk,G extends MiGeometryHexahedronIjk>
MiPointProbeIjkgetNewInstance(MiVolumeMeshVertexHexahedronIjk<T,G> mesh)
Create an instance of a probe for non indexed hexahedron volume mesh IJK.abstract double
getValue(MiScalardSetIjk dataset)
Gets the scalar value at the current probe location in the givenPER_CELL
scalar set.abstract double[]
getValue(MiVec3dSetIjk dataset)
Gets the vector value at the current probe location in the givenPER_CELL
vector set.abstract boolean
isFound()
Checks if the current probe location is inside the mesh.abstract boolean
moveLocation(double[] point, int cellIdI, int cellIdJ, int cellIdK, MiCellFilterIjk cellFilter)
Moves the current probe location at the given point.abstract boolean
setLocation(double[] point, MiCellFilterIjk cellFilter)
Sets the current probe location at the given point and looks for the cell containing this point.-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.openinventor.meshvizxlm.extractors.MiBaseExtractor
setExtractorCallback
-
Methods inherited from interface com.openinventor.meshvizxlm.extractors.MiExtractorIjk
addCellRange, clearCellRanges
-
-
-
-
Method Detail
-
getNewInstance
public static <T extends MiTopologyIjk,G extends MiGeometryHexahedronIjk> MiPointProbeIjk getNewInstance(MiVolumeMeshVertexHexahedronIjk<T,G> mesh)
Create an instance of a probe for non indexed hexahedron volume mesh IJK.- Parameters:
mesh
- the input mesh- Returns:
- a probe for non indexed hexahedron volume mesh IJK.
-
setLocation
public abstract boolean setLocation(double[] point, MiCellFilterIjk cellFilter)
Sets the current probe location at the given point and looks for the cell containing this point.
If the probe location is inside a cell not accepted by the optional filter, this methods returnsfalse
- Parameters:
point
- the destination point of the probecellFilter
- the cell filter- Returns:
true
if this location is inside the mesh,false
otherwise
-
moveLocation
public abstract boolean moveLocation(double[] point, int cellIdI, int cellIdJ, int cellIdK, MiCellFilterIjk cellFilter)
Moves the current probe location at the given point.This method is similar and gives the same result as
setLocation(double[], MiCellFilterIjk)
. But, first it looks for the containing cell in the neighborhood of the cell having id (cellIdI,cellIdJ,cellIdK
). Then, if the neighborhood of this given cell does not contain the given point this method searches in the whole mesh like the methodsetLocation
.For instance,
moveLocation
could be used instead ofsetLocation
when the cell containing the point is already known, or when the displacement of the probe is not too large compared to the cell's size at the previous location of the probe. In this case, usegetCellId()
as inputcellId
argument.- Parameters:
point
- the destination point of the probecellIdI
- input cell I used as initial search criteria. IfMxMeshViz.UNDEFINED_ID
, this method is equivalent tosetLocation
.cellIdJ
- input cell J used as initial search criteria. IfMxMeshViz.UNDEFINED_ID
, this method is equivalent tosetLocation
.cellIdK
- input cell K used as initial search criteria. IfMxMeshViz.UNDEFINED_ID
, this method is equivalent tosetLocation
.cellFilter
- the cell filter- Returns:
true
if this location is inside the mesh,false
otherwise
-
isFound
public abstract boolean isFound()
Checks if the current probe location is inside the mesh.- Returns:
true
if the current probe location is inside the mesh,false
otherwise
-
getCellId
public abstract int[] getCellId()
Gets the ids of the cell of the mesh containing the current location of the probe.i, j and k are set to
MxMeshViz.UNDEFINED_ID
if the current location of the probe is outside the mesh.- Returns:
- the {i, j, k} ids of the cell.
-
getValue
public abstract double getValue(MiScalardSetIjk dataset)
Gets the scalar value at the current probe location in the givenPER_CELL
scalar set.
The returned value is meaningless if the probe location is outside the mesh (whenisFound()
isfalse
- Parameters:
dataset
- the input scalar set- Returns:
- scalar value at the current probe location
- Throws:
java.lang.UnsupportedOperationException
- if binding of scalar set is notPER_CELL
-
getValue
public abstract double[] getValue(MiVec3dSetIjk dataset)
Gets the vector value at the current probe location in the givenPER_CELL
vector set.
The returned value isnull
if the probe location is outside the mesh (whenisFound()
isfalse
).- Parameters:
dataset
- the input vector set- Returns:
- the vector coordinates {x,y,z} at the current probe location or null if the probe location is outside the mesh
- Throws:
java.lang.UnsupportedOperationException
- if binding of vector set is notPER_CELL
-
-