org.jmol.jvxl.api
Interface MeshDataServer
public
interface
MeshDataServer
extends VertexDataServer
Method Summary |
abstract void | addTriangleCheck(int iA, int iB, int iC, int check, boolean isAbsolute)
addTriangleCheck adds a triangle along with a 3-bit check indicating
which edges to draw in mesh mode: 1 (iA-iB) + 2 (iB-iC) + 4 (iC-iA)
|
abstract int | addVertexCopy(Point3f vertexXYZ, float value, int assocVertex)
addVertexCopy is used by the Marching Squares algorithm to
uniquely identify a new vertex when an edge is crossed in the 2D plane.
|
abstract Point3f[] | calculateGeodesicSurface(BitSet bsSelected, float envelopeRadius) |
abstract void | fillMeshData(MeshData meshData, int mode) |
abstract int | getSurfacePointIndex(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, Point3i offset, int vertexA, int vertexB, float valueA, float valueB, Point3f pointA, Vector3f edgeVector, boolean isContourType)
getSurfacePointIndex is used by the Marching Cubes algorithm and
must return a unique integer identifier for
a vertex created by the Marching Cube algorithm when it finds an
edge. |
abstract void | invalidateTriangles() |
abstract void | notifySurfaceGenerationCompleted() |
abstract void | notifySurfaceMappingCompleted() |
public abstract void addTriangleCheck(int iA, int iB, int iC, int check, boolean isAbsolute)
addTriangleCheck adds a triangle along with a 3-bit check indicating
which edges to draw in mesh mode: 1 (iA-iB) + 2 (iB-iC) + 4 (iC-iA)
Parameters: iA iB iC check isAbsolute
public abstract int addVertexCopy(Point3f vertexXYZ, float value, int assocVertex)
addVertexCopy is used by the Marching Squares algorithm to
uniquely identify a new vertex when an edge is crossed in the 2D plane.
The implementing method should COPY the Point3f using Point3f.set().
The data consumer can use the association key to group this vertex with others
near the same gridpoint.
Parameters: vertexXYZ value assocVertex unique association vertex or -1
Returns: new vertex index
public abstract Point3f[] calculateGeodesicSurface(BitSet bsSelected, float envelopeRadius)
public abstract void fillMeshData(
MeshData meshData, int mode)
public abstract int getSurfacePointIndex(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, Point3i offset, int vertexA, int vertexB, float valueA, float valueB, Point3f pointA, Vector3f edgeVector, boolean isContourType)
getSurfacePointIndex is used by the Marching Cubes algorithm and
must return a unique integer identifier for
a vertex created by the Marching Cube algorithm when it finds an
edge. If a vertex is discarded, then Integer.MAX_VALUE should be returned.
the 3D coordinate of the point can be calculated using
surfacePoint.scaleAdd(fraction, edgeVector, pointA);
where fraction is generally calculated as:
fraction = (cutoff - valueA) / (valueB - valueA);
if (isCutoffAbsolute && (fraction < 0 || fraction > 1))
fraction = (-cutoff - valueA) / (valueB - valueA);
This method is also used by MarchingCubes to deliver the appropriate
oblique planar coordinate to MarchingSquares for later contouring.
Parameters: cutoff isCutoffAbsolute x y z offset vertexA [0:7] vertexB [0:7] valueA valueB pointA edgeVector vector from A to B isContourType
Returns: new vertex index or Integer.MAX_VALUE
public abstract void invalidateTriangles()
public abstract void notifySurfaceGenerationCompleted()
public abstract void notifySurfaceMappingCompleted()