Class Isosurface

    • Field Detail

      • actualID

        private java.lang.String actualID
      • iHaveBitSets

        protected boolean iHaveBitSets
      • explicitContours

        private boolean explicitContours
      • atomIndex

        private int atomIndex
      • moNumber

        private int moNumber
      • moLinearCombination

        private float[] moLinearCombination
      • colorType

        private int colorType
      • defaultColix

        private short defaultColix
      • meshColix

        private short meshColix
      • center

        private javajs.util.P3 center
      • scale3d

        private float scale3d
      • isPhaseColored

        private boolean isPhaseColored
      • isColorExplicit

        private boolean isColorExplicit
      • scriptAppendix

        private java.lang.String scriptAppendix
      • withinDistance2

        private float withinDistance2
      • isWithinNot

        private boolean isWithinNot
      • withinPoints

        private javajs.util.Lst<javajs.util.P3> withinPoints
      • cutoffRange

        private float[] cutoffRange
      • allowMesh

        boolean allowMesh
      • script

        private java.lang.String script
      • iHaveModelIndex

        private boolean iHaveModelIndex
      • nLCAO

        private int nLCAO
      • lcaoDir

        private javajs.util.P4 lcaoDir
      • associateNormals

        private boolean associateNormals
      • MAX_OBJECT_CLICK_DISTANCE_SQUARED

        private static final int MAX_OBJECT_CLICK_DISTANCE_SQUARED
        See Also:
        Constant Field Values
      • ptXY

        private final javajs.util.P3i ptXY
      • keyXy

        public int[] keyXy
    • Constructor Detail

      • Isosurface

        public Isosurface()
    • Method Detail

      • newSg

        protected void newSg()
      • clearSg

        protected void clearSg()
      • setProperty

        public void setProperty​(java.lang.String propertyName,
                                java.lang.Object value,
                                BS bs)
        Specified by:
        setProperty in class Shape
      • setPropI

        protected void setPropI​(java.lang.String propertyName,
                                java.lang.Object value,
                                BS bs)
      • setIsoMeshColor

        private void setIsoMeshColor​(IsosurfaceMesh m,
                                     java.lang.String color)
      • setColorPhase

        private void setColorPhase​(IsosurfaceMesh m,
                                   short colix0,
                                   short colix1)
      • ensureMeshSource

        private void ensureMeshSource()
      • slabPolygons

        protected void slabPolygons​(java.lang.Object[] slabInfo)
      • setPropertySuper

        private void setPropertySuper​(java.lang.String propertyName,
                                      java.lang.Object value,
                                      BS bs)
      • getPropertyData

        public boolean getPropertyData​(java.lang.String property,
                                       java.lang.Object[] data)
        Overrides:
        getPropertyData in class Shape
        Returns:
        true if serviced
      • getProperty

        public java.lang.Object getProperty​(java.lang.String property,
                                            int index)
        Overrides:
        getProperty in class Shape
        Returns:
        true if serviced
      • getPropI

        protected java.lang.Object getPropI​(java.lang.String property,
                                            int index)
      • getDataRange

        private float[] getDataRange​(IsosurfaceMesh mesh)
      • calculateVolumeOrArea

        private java.lang.Object calculateVolumeOrArea​(IsosurfaceMesh mesh,
                                                       boolean isArea)
      • getPolygonColorData

        public static java.lang.String getPolygonColorData​(int ccount,
                                                           short[] colixes,
                                                           int[][] polygons,
                                                           BS bsSlabDisplay)
      • getShapeState

        public java.lang.String getShapeState()
        Specified by:
        getShapeState in class Shape
      • getMeshCommand

        private void getMeshCommand​(javajs.util.SB sb,
                                    int i)
      • getScriptBitSets

        private boolean getScriptBitSets​(java.lang.String script,
                                         BS[] bsCmd)
      • getCapSlabInfo

        protected void getCapSlabInfo​(java.lang.String script)
      • getCapSlabObject

        private java.lang.Object[] getCapSlabObject​(java.lang.String s,
                                                    boolean isCap)
        legacy -- for some scripts with early isosurface slabbing
        Parameters:
        s -
        isCap -
        Returns:
        slabInfo object
      • initializeIsosurface

        private void initializeIsosurface()
      • initState

        private void initState()
      • setMeshI

        private void setMeshI()
      • discardTempData

        protected void discardTempData​(boolean discardAll)
      • getDefaultColix

        private short getDefaultColix()
      • drawLcaoCartoon

        private void drawLcaoCartoon​(javajs.util.V3 z,
                                     javajs.util.V3 x,
                                     javajs.util.V3 rotAxis,
                                     int nElectrons)
      • createLcaoLobe

        private void createLcaoLobe​(javajs.util.V3 lobeAxis,
                                    float factor,
                                    int nElectrons)
      • setOutputChannel

        public void setOutputChannel​(javajs.api.GenericBinaryDocument binaryDoc,
                                     javajs.util.OC out)
        Specified by:
        setOutputChannel in interface MeshDataServer
      • setBsVdw

        private void setBsVdw()
      • 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 && (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.
        Specified by:
        getSurfacePointIndexAndFraction in interface VertexDataServer
        vA - [0:7]
        vB - [0:7]
        edgeVector - vector from A to B
        Returns:
        new vertex index or Integer.MAX_VALUE
      • 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
        assocVertex - unique association vertex or -1
        Returns:
        new vertex index
      • 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
        iContour - TODO
        Returns:
        polygon index or -1
      • setScriptInfo

        protected void setScriptInfo​(java.lang.String strCommand)
      • setJvxlInfo

        private void setJvxlInfo()
      • getShapeDetail

        public java.lang.Object getShapeDetail()
        Overrides:
        getShapeDetail in class Shape
      • addMeshInfo

        protected void addMeshInfo​(IsosurfaceMesh mesh,
                                   java.util.Map<java.lang.String,​java.lang.Object> info)
      • 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
        Returns:
        value[x][y][z]
      • checkObjectHovered

        public boolean checkObjectHovered​(int x,
                                          int y,
                                          BS bsVisible)
        Overrides:
        checkObjectHovered in class Shape
        Returns:
        T/F
      • hoverKey

        private void hoverKey​(int x,
                              int y)
      • checkObjectClicked

        public java.util.Map<java.lang.String,​java.lang.Object> checkObjectClicked​(int x,
                                                                                         int y,
                                                                                         int action,
                                                                                         BS bsVisible,
                                                                                         boolean drawPicking)
        Overrides:
        checkObjectClicked in class Shape
        drawPicking - TODO
        Returns:
        Hashtable containing information about pt clicked
      • findValue

        private java.lang.String findValue​(int x,
                                           int y,
                                           boolean isPicking,
                                           BS bsVisible)
        Parameters:
        x -
        y -
        isPicking - IGNORED
        bsVisible -
        Returns:
        value found
      • getCmd

        public java.lang.String getCmd​(int index)