Class SurfaceReader

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

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
    • volumeData

      VolumeData volumeData
    • edgeData

      private String edgeData
    • haveSurfaceAtoms

      protected boolean haveSurfaceAtoms
    • allowSigma

      protected boolean allowSigma
    • isProgressive

      protected boolean isProgressive
    • isXLowToHigh

      protected boolean isXLowToHigh
    • assocCutoff

      private float assocCutoff
    • isQuiet

      protected boolean isQuiet
    • isPeriodic

      protected boolean isPeriodic
    • vertexDataOnly

      boolean vertexDataOnly
    • hasColorData

      boolean hasColorData
    • dataMin

      protected float dataMin
    • dataMax

      protected float dataMax
    • dataMean

      protected float dataMean
    • xyzMin

      protected javajs.util.P3 xyzMin
    • xyzMax

      protected javajs.util.P3 xyzMax
    • center

      protected javajs.util.P3 center
    • anisotropy

      protected float[] anisotropy
    • isAnisotropic

      protected boolean isAnisotropic
    • eccentricityMatrix

      protected javajs.util.M3 eccentricityMatrix
    • eccentricityMatrixInverse

      protected javajs.util.M3 eccentricityMatrixInverse
    • isEccentric

      protected boolean isEccentric
    • eccentricityScale

      protected float eccentricityScale
    • eccentricityRatio

      protected float eccentricityRatio
    • ANGSTROMS_PER_BOHR

      static final float ANGSTROMS_PER_BOHR
      See Also:
    • defaultMappedDataMin

      static final float defaultMappedDataMin
      See Also:
    • defaultMappedDataMax

      static final float defaultMappedDataMax
      See Also:
    • defaultCutoff

      static final float defaultCutoff
      See Also:
    • edgeCount

      private int edgeCount
    • volumetricOrigin

      protected javajs.util.P3 volumetricOrigin
    • volumetricVectors

      protected javajs.util.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 javajs.util.SB jvxlFileHeaderBuffer
    • fractionData

      protected javajs.util.SB fractionData
    • jvxlEdgeDataRead

      protected String jvxlEdgeDataRead
    • jvxlColorDataRead

      protected String jvxlColorDataRead
    • jvxlVoxelBitSet

      protected javajs.util.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 javajs.util.P3 ptTemp
    • colorPhases

      private static final String[] colorPhases
    • minMax

      protected float[] minMax
    • haveSetAnisotropy

      private boolean haveSetAnisotropy
  • Constructor Details

    • SurfaceReader

      SurfaceReader()
  • Method Details

    • init

      abstract void init(SurfaceGenerator sg)
      implemented in SurfaceFileReader and
      Parameters:
      sg -
    • initSR

      void initSR(SurfaceGenerator sg)
    • closeReader

      protected abstract void closeReader()
    • setOutputChannel

      protected void setOutputChannel(javajs.util.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)
    • jvxlUpdateInfo

      void jvxlUpdateInfo()
    • readAndSetVolumeParameters

      boolean readAndSetVolumeParameters(boolean isMapData)
    • createIsosurface

      boolean createIsosurface(boolean justForPlane)
    • resetIsosurface

      void resetIsosurface()
    • discardTempData

      void discardTempData(boolean discardAll)
    • discardTempDataSR

      protected void discardTempDataSR(boolean discardAll)
    • initializeVolumetricData

      void initializeVolumetricData()
    • 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)
    • initPlanes

      void initPlanes()
    • 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)
    • generateSurfaceData

      private void generateSurfaceData()
    • postProcessVertices

      protected void postProcessVertices()
    • getSurfacePointIndexAndFraction

      public int getSurfacePointIndexAndFraction(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, javajs.util.P3i offset, int vA, int vB, float valueA, float valueB, javajs.util.T3 pointA, javajs.util.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, javajs.util.T3 pointA, javajs.util.V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, javajs.util.T3 ptReturn)
    • getSPF

      protected float getSPF(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, javajs.util.T3 pointA, javajs.util.V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, javajs.util.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(javajs.util.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(javajs.util.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
    • colorIsosurface

      void colorIsosurface()
    • applyColorScale

      void applyColorScale()
    • colorData

      private void colorData()
    • getColorPhaseIndex

      static int getColorPhaseIndex(String color)
    • getPhase

      private float getPhase(javajs.util.T3 pt)
    • getMinMaxMappedValues

      public float[] getMinMaxMappedValues(boolean haveData)
    • updateTriangles

      void updateTriangles()
    • updateSurfaceData

      void updateSurfaceData()
    • selectPocket

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

      void excludeMinimumSet()
    • excludeMaximumSet

      void excludeMaximumSet()
    • slabIsosurface

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

      protected void setVertexAnisotropy(javajs.util.T3 pt)
    • setVectorAnisotropy

      protected void setVectorAnisotropy(javajs.util.T3 v)
    • setVolumetricAnisotropy

      protected void setVolumetricAnisotropy()
    • setVolumetricOriginAnisotropy

      protected void setVolumetricOriginAnisotropy()
    • setBBoxAll

      private void setBBoxAll()
    • setBBox

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

      public float getValueAtPoint(javajs.util.T3 pt, boolean getSource)
      Parameters:
      pt -
      getSource - TODO
      Returns:
      value
    • initializeMapping

      void initializeMapping()
    • finalizeMapping

      protected void finalizeMapping()
    • getSurfaceAtomIndex

      public int getSurfaceAtomIndex()