org.jmol.shapesurface
Class Isosurface

java.lang.Object
  extended by org.jmol.shape.Shape
      extended by org.jmol.shape.MeshCollection
          extended by org.jmol.shapesurface.MeshFileCollection
              extended by org.jmol.shapesurface.Isosurface
All Implemented Interfaces:
MeshDataServer, VertexDataServer
Direct Known Subclasses:
LcaoCartoon, MolecularOrbital

public class Isosurface
extends MeshFileCollection
implements MeshDataServer


Field Summary
private  boolean associateNormals
           
private  int atomIndex
           
private  javax.vecmath.Point3f center
           
private  ColorEncoder colorEncoder
           
private  short defaultColix
           
private  boolean iHaveBitSets
           
private  int indexColorNegative
           
private  int indexColorPositive
           
private  IsosurfaceMesh[] isomeshes
           
private  boolean isPhaseColored
           
private  JvxlData jvxlData
           
private  javax.vecmath.Point4f lcaoDir
           
private  int lighting
           
private  int moNumber
           
private  int nLCAO
           
protected  SurfaceGenerator sg
           
private  IsosurfaceMesh thisMesh
           
 
Fields inherited from class org.jmol.shapesurface.MeshFileCollection
line, next
 
Fields inherited from class org.jmol.shape.MeshCollection
allowMesh, colix, currentMesh, explicitID, iHaveModelIndex, isFixed, linkedMesh, meshCount, meshes, modelCount, modelIndex, myType, nUnnamed, previousMeshID, script, title
 
Fields inherited from class org.jmol.shape.Shape
g3d, isBioShape, modelSet, myVisibilityFlag, shapeID, translucentAllowed, translucentLevel, viewer
 
Constructor Summary
Isosurface()
           
 
Method Summary
 void addTriangleCheck(int iA, int iB, int iC, int check, boolean isAbsolute)
          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(javax.vecmath.Point3f vertexXYZ, float value, int assocVertex)
          addVertexCopy is used by the Marching Squares algorithm to uniquely identify a new vertex when an edge is crossed in the 2D plane.
 void allocMesh(java.lang.String thisID)
           
 javax.vecmath.Point3f[] calculateGeodesicSurface(java.util.BitSet bsSelected, float envelopeRadius)
           
protected  void clearSg()
           
private  void createLcaoLobe(javax.vecmath.Vector3f lobeAxis, float factor)
           
private  void discardTempData(boolean discardAll)
           
private  void drawLcaoCartoon(javax.vecmath.Vector3f z, javax.vecmath.Vector3f x, javax.vecmath.Vector3f rotAxis)
           
 void fillMeshData(MeshData meshData, int mode)
           
private  short getDefaultColix()
           
 java.lang.Object getProperty(java.lang.String property, int index)
           
private  boolean getScriptBitSets(java.lang.String script, java.util.BitSet[] bsCmd)
           
 java.util.Vector getShapeDetail()
           
 int getSurfacePointIndex(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, javax.vecmath.Point3i offset, int vA, int vB, float valueA, float valueB, javax.vecmath.Point3f pointA, javax.vecmath.Vector3f edgeVector, boolean isContourType)
          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.
private  java.lang.String getUserColorScheme(java.lang.String schemeName)
           
private  void initializeIsosurface()
           
 void initShape()
           
private  void initState()
           
 void invalidateTriangles()
           
 void notifySurfaceGenerationCompleted()
           
 void notifySurfaceMappingCompleted()
           
protected  void remapColors()
           
private  void setJvxlInfo()
           
private  void setModelIndex()
           
 void setProperty(java.lang.String propertyName, java.lang.Object value, java.util.BitSet bs)
           
private  void setPropertySuper(java.lang.String propertyName, java.lang.Object value, java.util.BitSet bs)
           
protected  void setScriptInfo()
           
 
Methods inherited from class org.jmol.shapesurface.MeshFileCollection
getTokens, parseFloat, parseFloat, parseFloatNext, parseInt, parseInt, parseInt, parseIntNext
 
Methods inherited from class org.jmol.shape.MeshCollection
deleteMesh, getIndexFromName, getModelIndex, getShapeState, setModelIndex, setVisibilityFlags
 
Methods inherited from class org.jmol.shape.Shape
appendCmd, checkBoundsMinMax, checkObjectClicked, checkObjectDragged, checkObjectHovered, findNearestAtomIndex, getColix, getColorCommand, getColorCommand, getFontCommand, getShapeCommands, getShapeCommands, getViewer, initializeShape, initModelSet, setColix, setColix, setModelClickability, setModelSet, setSize, setStateInfo, setStateInfo, wasClicked
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

isomeshes

private IsosurfaceMesh[] isomeshes

thisMesh

private IsosurfaceMesh thisMesh

lighting

private int lighting

iHaveBitSets

private boolean iHaveBitSets

atomIndex

private int atomIndex

moNumber

private int moNumber

defaultColix

private short defaultColix

center

private javax.vecmath.Point3f center

isPhaseColored

private boolean isPhaseColored

sg

protected SurfaceGenerator sg

jvxlData

private JvxlData jvxlData

colorEncoder

private ColorEncoder colorEncoder

indexColorPositive

private int indexColorPositive

indexColorNegative

private int indexColorNegative

nLCAO

private int nLCAO

lcaoDir

private javax.vecmath.Point4f lcaoDir

associateNormals

private boolean associateNormals
Constructor Detail

Isosurface

public Isosurface()
Method Detail

allocMesh

public void allocMesh(java.lang.String thisID)
Overrides:
allocMesh in class MeshCollection

initShape

public void initShape()
Overrides:
initShape in class MeshCollection

clearSg

protected void clearSg()

setProperty

public void setProperty(java.lang.String propertyName,
                        java.lang.Object value,
                        java.util.BitSet bs)
Overrides:
setProperty in class MeshCollection

setPropertySuper

private void setPropertySuper(java.lang.String propertyName,
                              java.lang.Object value,
                              java.util.BitSet bs)

getProperty

public java.lang.Object getProperty(java.lang.String property,
                                    int index)
Overrides:
getProperty in class MeshCollection

getScriptBitSets

private boolean getScriptBitSets(java.lang.String script,
                                 java.util.BitSet[] bsCmd)

initializeIsosurface

private void initializeIsosurface()

initState

private void initState()

discardTempData

private void discardTempData(boolean discardAll)

getDefaultColix

private short getDefaultColix()

drawLcaoCartoon

private void drawLcaoCartoon(javax.vecmath.Vector3f z,
                             javax.vecmath.Vector3f x,
                             javax.vecmath.Vector3f rotAxis)

createLcaoLobe

private void createLcaoLobe(javax.vecmath.Vector3f lobeAxis,
                            float factor)

invalidateTriangles

public void invalidateTriangles()
Specified by:
invalidateTriangles in interface MeshDataServer

fillMeshData

public void fillMeshData(MeshData meshData,
                         int mode)
Specified by:
fillMeshData in interface MeshDataServer

notifySurfaceGenerationCompleted

public void notifySurfaceGenerationCompleted()
Specified by:
notifySurfaceGenerationCompleted in interface MeshDataServer

notifySurfaceMappingCompleted

public void notifySurfaceMappingCompleted()
Specified by:
notifySurfaceMappingCompleted in interface MeshDataServer

calculateGeodesicSurface

public javax.vecmath.Point3f[] calculateGeodesicSurface(java.util.BitSet bsSelected,
                                                        float envelopeRadius)
Specified by:
calculateGeodesicSurface in interface MeshDataServer

getSurfacePointIndex

public int getSurfacePointIndex(float cutoff,
                                boolean isCutoffAbsolute,
                                int x,
                                int y,
                                int z,
                                javax.vecmath.Point3i offset,
                                int vA,
                                int vB,
                                float valueA,
                                float valueB,
                                javax.vecmath.Point3f pointA,
                                javax.vecmath.Vector3f edgeVector,
                                boolean isContourType)
Description copied from interface: MeshDataServer
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:
getSurfacePointIndex in interface MeshDataServer
Specified by:
getSurfacePointIndex 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(javax.vecmath.Point3f vertexXYZ,
                         float value,
                         int assocVertex)
Description copied from interface: MeshDataServer
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 MeshDataServer
Specified by:
addVertexCopy in interface VertexDataServer
assocVertex - unique association vertex or -1
Returns:
new vertex index

addTriangleCheck

public void addTriangleCheck(int iA,
                             int iB,
                             int iC,
                             int check,
                             boolean isAbsolute)
Description copied from interface: MeshDataServer
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 MeshDataServer
Specified by:
addTriangleCheck in interface VertexDataServer

setModelIndex

private void setModelIndex()

setScriptInfo

protected void setScriptInfo()

setJvxlInfo

private void setJvxlInfo()

getShapeDetail

public java.util.Vector getShapeDetail()
Overrides:
getShapeDetail in class Shape

remapColors

protected void remapColors()
Overrides:
remapColors in class Shape

getUserColorScheme

private java.lang.String getUserColorScheme(java.lang.String schemeName)