VertexDataServer
Date: 2019-10-22

org.jmol.jvxl.api

## Interface VertexDataServer

- All Known Subinterfaces:
    MeshDataServer
  All Known Implementing Classes:
    ApbsReader, AtomDataReader, AtomPropertyMapper, BCifDensityReader, CastepDensityReader, CifDensityReader, Contact, CubeReader, DelPhiBinaryReader, Dsn6BinaryReader, EfvetReader, IsoFxyReader, IsoFxyzReader, IsoIntersectAtomReader, IsoIntersectGridReader, IsoIntersectReader, IsoMepReader, IsoMlpReader, IsoMOReader, IsoPlaneReader, IsoShapeReader, IsoSolventReader, Isosurface, JaguarReader, JvxlReader, JvxlXmlReader, KinemageReader, LcaoCartoon, MapFileReader, MolecularOrbital, MrcBinaryReader, MsmsReader, NBO, NffReader, ObjReader, PeriodicVolumeFileReader, Plot3D, PltFormattedReader, Pmesh, Pmesh4Reader, PmeshReader, PolygonFileReader, PyMOLMeshReader, Ras3DReader, SurfaceFileReader, SurfaceReader, UhbdReader, VaspChgcarReader, VolumeDataReader, VolumeFileReader, XplorReader, XsfReader

      public interface VertexDataServer

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addTriangleCheck(int iA, int iB, int iC, int check, int iContour, boolean isAbsolute, int color)` 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)
    `int` | `addVertexCopy(javajs.util.T3 vertexXYZ, float value, int assocVertex, boolean asCopy)` addVertexCopy is used by the Marching Squares algorithm to uniquely identify a new vertex when an edge is crossed in the 2D plane.
    `float[]` | `getPlane(int x)`
    `int` | `getSurfacePointIndexAndFraction(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, javajs.util.P3i offset, int vertexA, int vertexB, float valueA, float valueB, javajs.util.T3 pointA, javajs.util.V3 edgeVector, boolean isContourType, float[] fReturn)` 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.
    `float` | `getValue(int x, int y, int z, int ptyz)` for readers only

- - ### Method Detail

    - #### getSurfacePointIndexAndFraction

          int getSurfacePointIndexAndFraction(float cutoff,
                                              boolean isCutoffAbsolute,
                                              int x,
                                              int y,
                                              int z,
                                              javajs.util.P3i offset,
                                              int vertexA,
                                              int vertexB,
                                              float valueA,
                                              float valueB,
                                              javajs.util.T3 pointA,
                                              javajs.util.V3 edgeVector,
                                              boolean isContourType,
                                              float[] fReturn)

      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` -
        `fReturn` -
      Returns:
        new vertex index or Integer.MAX_VALUE

    - #### addVertexCopy

          int addVertexCopy(javajs.util.T3 vertexXYZ,
                            float value,
                            int assocVertex,
                            boolean asCopy)

      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
        `asCopy` -
      Returns:
        new vertex index

    - #### addTriangleCheck

          int addTriangleCheck(int iA,
                               int iB,
                               int iC,
                               int check,
                               int iContour,
                               boolean isAbsolute,
                               int color)

      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` -
        `iContour` - TODO
        `isAbsolute` -
        `color` -
      Returns:
        polygon index or -1

    - #### getValue

          float getValue(int x,
                         int y,
                         int z,
                         int ptyz)

      for readers only
      Parameters:
        `x` -
        `y` -
        `z` -
        `ptyz` -
      Returns:
        value[x][y][z]

    - #### getPlane

          float[] getPlane(int x)