Class IsosurfaceMesh

java.lang.Object
org.jmol.util.MeshSurface
org.jmol.shape.Mesh
org.jmol.shapesurface.IsosurfaceMesh

public class IsosurfaceMesh extends Mesh
  • Field Details

    • jvxlData

      public JvxlData jvxlData
    • vertexIncrement

      public int vertexIncrement
    • firstRealVertex

      public int firstRealVertex
    • dataType

      public int dataType
    • hasGridPoints

      public boolean hasGridPoints
    • calculatedArea

      Object calculatedArea
    • calculatedVolume

      Object calculatedVolume
    • info

      Object info
    • assocGridPointMap

      private Map<Integer,Integer> assocGridPointMap
    • assocGridPointNormals

      private Map<Integer,javajs.util.V3> assocGridPointNormals
    • mergeAssociatedNormalCount

      private int mergeAssociatedNormalCount
    • centers

      javajs.util.P3[] centers
    • contourValues

      float[] contourValues
    • contourColixes

      short[] contourColixes
    • colorEncoder

      public ColorEncoder colorEncoder
    • bsVdw

      javajs.util.BS bsVdw
    • colorPhased

      public boolean colorPhased
    • probeValues

      public float[] probeValues
  • Constructor Details

    • IsosurfaceMesh

      IsosurfaceMesh(Viewer vwr, String thisID, short colix, int index)
      Parameters:
      vwr -
      thisID -
      colix -
      index -
  • Method Details

    • getResolution

      public float getResolution()
      Overrides:
      getResolution in class MeshSurface
    • clearType

      void clearType(String meshType, boolean iAddGridPoints)
    • allocVertexColixes

      void allocVertexColixes()
    • addVertexCopy

      int addVertexCopy(javajs.util.T3 vertex, float value, int assocVertex, boolean associateNormals, boolean asCopy)
    • setTranslucent

      public void setTranslucent(boolean isTranslucent, float iLevel)
      Overrides:
      setTranslucent in class Mesh
    • setMerged

      public void setMerged(boolean TF)
    • sumVertexNormals

      protected void sumVertexNormals(javajs.util.T3[] vertices, javajs.util.V3[] vectorSums)
      Overrides:
      sumVertexNormals in class Mesh
    • getCenters

      javajs.util.P3[] getCenters()
    • getContours

      public javajs.util.Lst<Object>[] getContours()
      create a set of contour data. Each contour is a Vector containing: 0 Integer number of polygons (length of BitSet) 1 BitSet of critical triangles 2 Float value 3 int[] [colorArgb] 4 StringXBuilder containing encoded data for each segment: char type ('3', '6', '5') indicating which two edges of the triangle are connected: '3' 0x011 AB-BC '5' 0x101 AB-CA '6' 0x110 BC-CA char fraction along first edge (jvxlFractionToCharacter) char fraction along second edge (jvxlFractionToCharacter) 5- stream of pairs of points for rendering
      Returns:
      contour vector set
    • getPmeshData

      public Object getPmeshData(boolean isBinary)
    • get3dContour

      private static void get3dContour(IsosurfaceMesh m, javajs.util.Lst<Object> v, float value, short colix)
    • setContourVector

      public static void setContourVector(javajs.util.Lst<Object> v, int nPolygons, javajs.util.BS bsContour, float value, short colix, int color, javajs.util.SB fData)
    • addContourPoints

      public static void addContourPoints(javajs.util.Lst<Object> v, javajs.util.BS bsContour, int i, javajs.util.SB fData, javajs.util.T3[] vertices, float[] vertexValues, int iA, int iB, int iC, float value)
    • checkPt

      private static float checkPt(float[] vertexValues, int i, int j, float v)
      two values -- v1, and v2, which need not be ordered v1 < v2. v == v1 --> 0 v == v2 --> 1 v1 < v < v2 --> f in (0,1) v2 < v < v1 --> f in (0,1) i.e. (v1 < v) == (v < v2) We check AB, then (usually) BC, then (sometimes) CA. What if two end points are identical values? So, for example, if v = 1.0 and: A 1.0 0.5 1.0 1.0 / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ C-----B 1.0--0.5 1.0--1.0 0.5--1.0 1.0---1.0 case I case II case III case IV case I: AB[0] and BC[1], type == 3 --> CA not tested. case II: AB[1] and CA[0]; f1 == 1.0 --> BC not tested. case III: AB[0] and BC[0], type == 3 --> CA not tested. case IV: AB[0] and BC[0], type == 3 --> CA not tested. what if v = 0.5? case I: AB[1]; BC not tested --> type == 1, invalid. case II: AB[0]; type == 1, f1 == 0.0 --> CA not tested. case III: BC[1]; f2 == 1.0 --> CA not tested.
      Parameters:
      vertexValues -
      i -
      j -
      v -
      Returns:
      fraction along the edge or NaN
    • getContourPoint

      private static javajs.util.P3 getContourPoint(javajs.util.T3[] vertices, int i, int j, float f)
    • setDiscreteColixes

      public void setDiscreteColixes(float[] values, short[] colixes)
    • getContourList

      Map<String,Object> getContourList(Viewer vwr)
      Parameters:
      vwr -
      Returns:
      a Hashtable containing "values" and "colors"
    • deleteContours

      void deleteContours()
    • setVertexColorMap

      void setVertexColorMap()
    • setVertexColixesForAtoms

      void setVertexColixesForAtoms(Viewer vwr, short[] colixes, int[] atomMap, javajs.util.BS bs)
    • colorVertices

      void colorVertices(short colix, javajs.util.BS bs, boolean isAtoms)
      color a specific set of vertices a specific color
      Parameters:
      colix -
      bs -
      isAtoms -
    • checkAllocColixes

      void checkAllocColixes()
    • addColorToMap

      private static void addColorToMap(Map<String,javajs.util.BS> colorMap, String color, javajs.util.BS bs)
      adds a set of specifically-colored vertices to the map, ensuring that no vertex is in two maps.
      Parameters:
      colorMap -
      color -
      bs -
    • setJvxlColorMap

      void setJvxlColorMap(boolean isAll)
      set up the jvxlData fields needed for either just the header (isAll = false) or the full file (isAll = true)
      Parameters:
      isAll -
    • setColorCommand

      void setColorCommand()
      just sets the color command for this isosurface.
    • setColorsFromJvxlData

      boolean setColorsFromJvxlData(int colorRgb)
      from Isosurface.notifySurfaceGenerationCompleted() starting with Jmol 12.1.50, JVXL files contain color, translucency, color scheme information, and vertex color mappings (as from COLOR ISOSURFACE {hydrophobic} WHITE), returning these settings when the JVXL file is opened.
      Parameters:
      colorRgb -
      Returns:
      true if still need color handling
    • setJvxlDataRendering

      void setJvxlDataRendering()
    • remapColors

      void remapColors(Viewer vwr, ColorEncoder ce, float translucentLevel)
      remaps colors based on a new color scheme or translucency level
      Parameters:
      vwr -
      ce -
      translucentLevel -
    • reinitializeLightingAndColor

      public void reinitializeLightingAndColor(Viewer vwr)
    • getBoundingBox

      public javajs.util.P3[] getBoundingBox()
      Overrides:
      getBoundingBox in class Mesh
    • setBoundingBox

      public void setBoundingBox(javajs.util.P3[] pts)
      Overrides:
      setBoundingBox in class MeshSurface
    • merge

      protected void merge(MeshData m)
    • mergePolygons

      private static int mergePolygons(MeshSurface m, int ipt, int vertexCount, int[][] newPolygons)
    • getUnitCell

      public SymmetryInterface getUnitCell()
      Overrides:
      getUnitCell in class Mesh
      Returns:
      unitcell
    • fixLattice

      void fixLattice()
    • getMinDistance2ForVertexGrouping

      protected float getMinDistance2ForVertexGrouping()
      Overrides:
      getMinDistance2ForVertexGrouping in class Mesh
    • getVisibleVertexBitSet

      public javajs.util.BS getVisibleVertexBitSet()
      Overrides:
      getVisibleVertexBitSet in class Mesh
    • updateCoordinates

      public void updateCoordinates(javajs.util.M4 m, javajs.util.BS bs)
      bs will be null if this is a set from the new isosurface MOVE [mat4] command
      Parameters:
      m -
      bs -
    • getDataMinMax

      float[] getDataMinMax()
    • getDataRange

      float[] getDataRange()
    • getInfo

      public Object getInfo(boolean isAll)
      Overrides:
      getInfo in class Mesh
    • getValidValues

      public float[] getValidValues(javajs.util.BS bs)
    • getValidVertices

      public javajs.util.T3[] getValidVertices(javajs.util.BS bs)
    • getInvalidBS

      private void getInvalidBS(javajs.util.BS bs)