Class SurfaceReader

java.lang.Object
org.jmol.jvxl.readers.SurfaceReader
All Implemented Interfaces:
VertexDataServer
Direct Known Subclasses:
JvxlXmlReader, PeriodicVolumeFileReader

public abstract class SurfaceReader extends Object implements VertexDataServer
  • Field Details

    • sg

      protected SurfaceGenerator sg
    • meshDataServer

      protected MeshDataServer meshDataServer
    • params

      protected Parameters params
    • meshData

      protected MeshData meshData
    • jvxlData

      protected JvxlData jvxlData
    • haveSurfaceAtoms

      protected boolean haveSurfaceAtoms
    • allowSigma

      protected boolean allowSigma
    • isProgressive

      protected boolean isProgressive
    • isXLowToHigh

      protected boolean isXLowToHigh
    • isQuiet

      protected boolean isQuiet
    • isPeriodic

      protected boolean isPeriodic
    • dataMin

      protected float dataMin
    • dataMax

      protected float dataMax
    • dataMean

      protected float dataMean
    • xyzMin

      protected P3 xyzMin
    • xyzMax

      protected P3 xyzMax
    • center

      protected P3 center
    • anisotropy

      protected float[] anisotropy
    • isAnisotropic

      protected boolean isAnisotropic
    • eccentricityMatrix

      protected M3 eccentricityMatrix
    • eccentricityMatrixInverse

      protected M3 eccentricityMatrixInverse
    • isEccentric

      protected boolean isEccentric
    • eccentricityScale

      protected float eccentricityScale
    • eccentricityRatio

      protected float eccentricityRatio
    • volumetricOrigin

      protected P3 volumetricOrigin
    • volumetricVectors

      protected V3[] volumetricVectors
    • voxelCounts

      protected int[] voxelCounts
    • voxelData

      protected float[][][] voxelData
    • nBytes

      protected long nBytes
    • nDataPoints

      protected int nDataPoints
    • nPointsX

      protected int nPointsX
    • nPointsY

      protected int nPointsY
    • nPointsZ

      protected int nPointsZ
    • isJvxl

      protected boolean isJvxl
    • edgeFractionBase

      protected int edgeFractionBase
    • edgeFractionRange

      protected int edgeFractionRange
    • colorFractionBase

      protected int colorFractionBase
    • colorFractionRange

      protected int colorFractionRange
    • jvxlFileHeaderBuffer

      protected SB jvxlFileHeaderBuffer
    • fractionData

      protected SB fractionData
    • jvxlEdgeDataRead

      protected String jvxlEdgeDataRead
    • jvxlColorDataRead

      protected String jvxlColorDataRead
    • jvxlVoxelBitSet

      protected BS jvxlVoxelBitSet
    • jvxlDataIsColorMapped

      protected boolean jvxlDataIsColorMapped
    • jvxlDataIsPrecisionColor

      protected boolean jvxlDataIsPrecisionColor
    • jvxlDataIs2dContour

      protected boolean jvxlDataIs2dContour
    • jvxlDataIsColorDensity

      protected boolean jvxlDataIsColorDensity
    • jvxlCutoff

      protected float jvxlCutoff
    • jvxlCutoffRange

      protected float[] jvxlCutoffRange
    • jvxlNSurfaceInts

      protected int jvxlNSurfaceInts
    • cJvxlEdgeNaN

      protected char cJvxlEdgeNaN
    • contourVertexCount

      protected int contourVertexCount
    • marchingSquares

      protected MarchingSquares marchingSquares
    • marchingCubes

      protected MarchingCubes marchingCubes
    • yzPlanes

      protected float[][] yzPlanes
    • yzCount

      protected int yzCount
    • qpc

      protected QuantumPlaneCalculation qpc
    • ptTemp

      protected final P3 ptTemp
    • minMax

      protected float[] minMax
  • Method Details

    • closeReader

      protected abstract void closeReader()
    • setOutputChannel

      protected void setOutputChannel(OC out)
      Parameters:
      out -
    • newVoxelDataCube

      protected void newVoxelDataCube()
    • setVolumeDataV

      protected void setVolumeDataV(VolumeData v)
    • readVolumeParameters

      protected abstract boolean readVolumeParameters(boolean isMapData)
    • readVolumeData

      protected abstract boolean readVolumeData(boolean isMapData)
    • discardTempDataSR

      protected void discardTempDataSR(boolean discardAll)
    • readSurfaceData

      protected abstract void readSurfaceData(boolean isMapData) throws Exception
      Throws:
      Exception
    • gotoAndReadVoxelData

      protected boolean gotoAndReadVoxelData(boolean isMapData)
    • gotoData

      protected void gotoData(int n, int nPoints) throws Exception
      Parameters:
      n -
      nPoints -
      Throws:
      Exception
    • readColorData

      protected String readColorData()
    • getPlane

      public float[] getPlane(int x)
      Specified by:
      getPlane in interface VertexDataServer
    • getPlaneSR

      protected float[] getPlaneSR(int x)
    • getValue

      public float getValue(int x, int y, int z, int ptyz)
      Description copied from interface: VertexDataServer
      for readers only
      Specified by:
      getValue in interface VertexDataServer
      Parameters:
      x -
      y -
      z -
      ptyz -
      Returns:
      value[x][y][z]
    • getValue2

      protected float getValue2(int x, int y, int z, int ptyz)
    • postProcessVertices

      protected void postProcessVertices()
    • getSurfacePointIndexAndFraction

      public int getSurfacePointIndexAndFraction(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, P3i offset, int vA, int vB, float valueA, float valueB, T3 pointA, V3 edgeVector, boolean isContourType, float[] fReturn)
      Description copied from interface: VertexDataServer
      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 invalid input: '&'invalid input: '&' (fraction invalid input: '<' 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.
      Specified by:
      getSurfacePointIndexAndFraction in interface VertexDataServer
      Parameters:
      cutoff -
      isCutoffAbsolute -
      x -
      y -
      z -
      offset -
      vA - [0:7]
      vB - [0:7]
      valueA -
      valueB -
      pointA -
      edgeVector - vector from A to B
      isContourType -
      fReturn -
      Returns:
      new vertex index or Integer.MAX_VALUE
    • getSurfacePointAndFraction

      protected float getSurfacePointAndFraction(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, T3 pointA, V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, T3 ptReturn)
    • getSPF

      protected float getSPF(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, T3 pointA, V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, T3 ptReturn)
      Parameters:
      cutoff -
      isCutoffAbsolute -
      valueA -
      valueB -
      pointA -
      edgeVector -
      x - TODO
      y - TODO
      z - TODO
      vA -
      vB -
      fReturn -
      ptReturn -
      Returns:
      fractional distance from A to B
    • addVertexCopy

      public int addVertexCopy(T3 vertexXYZ, float value, int assocVertex, boolean asCopy)
      Description copied from interface: VertexDataServer
      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.
      Specified by:
      addVertexCopy in interface VertexDataServer
      Parameters:
      vertexXYZ -
      value -
      assocVertex - unique association vertex or -1
      asCopy -
      Returns:
      new vertex index
    • addVC

      protected int addVC(T3 vertexXYZ, float value, int assocVertex, boolean asCopy)
    • addTriangleCheck

      public int addTriangleCheck(int iA, int iB, int iC, int check, int iContour, boolean isAbsolute, int color)
      Description copied from interface: VertexDataServer
      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)
      Specified by:
      addTriangleCheck in interface VertexDataServer
      Parameters:
      iA -
      iB -
      iC -
      check -
      iContour - TODO
      isAbsolute -
      color -
      Returns:
      polygon index or -1
    • getMinMaxMappedValues

      public float[] getMinMaxMappedValues(boolean haveData)
    • selectPocket

      public void selectPocket(boolean doExclude)
      Parameters:
      doExclude -
    • slabIsosurface

      public void slabIsosurface(Lst<Object[]> slabInfo)
    • setVertexAnisotropy

      protected void setVertexAnisotropy(T3 pt)
    • setVectorAnisotropy

      protected void setVectorAnisotropy(T3 v)
    • setVolumetricAnisotropy

      protected void setVolumetricAnisotropy()
    • setVolumetricOriginAnisotropy

      protected void setVolumetricOriginAnisotropy()
    • setBBox

      protected void setBBox(T3 pt, float margin)
    • getValueAtPoint

      public float getValueAtPoint(T3 pt, boolean getSource)
      Parameters:
      pt -
      getSource - TODO
      Returns:
      value
    • finalizeMapping

      protected void finalizeMapping()
    • getSurfaceAtomIndex

      public int getSurfaceAtomIndex()