Package org.jmol.shapesurface
Class IsosurfaceMesh
java.lang.Object
org.jmol.util.MeshSurface
org.jmol.shape.Mesh
org.jmol.shapesurface.IsosurfaceMesh
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) javajs.util.BS
(package private) Object
(package private) Object
(package private) javajs.util.P3[]
boolean
(package private) short[]
(package private) float[]
int
int
boolean
(package private) Object
private int
float[]
int
Fields inherited from class org.jmol.shape.Mesh
atomIndex, bsTemp, cappingObject, checkByteCount, color, colorCommand, colorDensity, colorType, connectedAtoms, diameter, drawTriangles, fillTriangles, frontOnly, havePlanarContours, haveXyPoints, index, insideOut, isModelConnected, isShell, isTwoSided, isValid, lattice, lighting, lineData, linkedMesh, meshColix, modelIndex, normixes, PREVIOUS_MESH_ID, ptCenter, recalcAltVertices, scale3d, scriptCommand, showContourLines, showPoints, showTriangles, slabbingObject, symopColixes, symopNormixes, symops, thisID, title, unitCell, useColix, vAB, vertexColorMap, visibilityFlags, visible, volumeRenderPointSize, vTemp, width
Fields inherited from class org.jmol.util.MeshSurface
altVertices, bsDisplay, bsPolygons, bsSlabDisplay, bsSlabGhost, colix, colixBack, colorsExplicit, dataOnly, haveQuads, iA, iB, iC, isColorSolid, isDrawPolygon, isMerged, mat4, mergePolygonCount0, mergeVertexCount0, meshType, normalCount, normals, normalsTemp, normixCount, nSets, oabc, offset, P_CHECK, P_CONTOUR, P_EXPLICIT_COLOR, pc, pcs, pis, polygonCount0, SEED_COUNT, slabColix, slabMeshType, slabOptions, surfaceAtoms, surfaceSet, vc, vcs, vertexCount0, vertexSets, vertexSource, vs, vvs, vwr
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate 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.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) (package private) int
addVertexCopy
(javajs.util.T3 vertex, float value, int assocVertex, boolean associateNormals, boolean asCopy) (package private) void
(package private) void
private static float
checkPt
(float[] vertexValues, int i, int j, float v) two values -- v1, and v2, which need not be ordered v1 < v2.(package private) void
(package private) void
colorVertices
(short colix, javajs.util.BS bs, boolean isAtoms) color a specific set of vertices a specific color(package private) void
(package private) void
private static void
get3dContour
(IsosurfaceMesh m, javajs.util.Lst<Object> v, float value, short colix) javajs.util.P3[]
(package private) javajs.util.P3[]
getContourList
(Viewer vwr) private static javajs.util.P3
getContourPoint
(javajs.util.T3[] vertices, int i, int j, float f) javajs.util.Lst<Object>[]
create a set of contour data.(package private) float[]
(package private) float[]
getInfo
(boolean isAll) private void
getInvalidBS
(javajs.util.BS bs) protected float
getPmeshData
(boolean isBinary) float
float[]
getValidValues
(javajs.util.BS bs) javajs.util.T3[]
getValidVertices
(javajs.util.BS bs) javajs.util.BS
protected void
private static int
mergePolygons
(MeshSurface m, int ipt, int vertexCount, int[][] newPolygons) void
(package private) void
remapColors
(Viewer vwr, ColorEncoder ce, float translucentLevel) remaps colors based on a new color scheme or translucency levelvoid
setBoundingBox
(javajs.util.P3[] pts) (package private) void
just sets the color command for this isosurface.(package private) 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.static void
setContourVector
(javajs.util.Lst<Object> v, int nPolygons, javajs.util.BS bsContour, float value, short colix, int color, javajs.util.SB fData) void
setDiscreteColixes
(float[] values, short[] colixes) (package private) void
setJvxlColorMap
(boolean isAll) set up the jvxlData fields needed for either just the header (isAll = false) or the full file (isAll = true)(package private) void
void
setMerged
(boolean TF) void
setTranslucent
(boolean isTranslucent, float iLevel) (package private) void
setVertexColixesForAtoms
(Viewer vwr, short[] colixes, int[] atomMap, javajs.util.BS bs) (package private) void
protected void
sumVertexNormals
(javajs.util.T3[] vertices, javajs.util.V3[] vectorSums) 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] commandMethods inherited from class org.jmol.shape.Mesh
checkWithin, clear, clearMesh, getNormals, getNormalsTemp, getOffsetVertices, getRendering, getState, getVertexIndexFromNumber, getVisibleVBS, initialize, mesh1, rotateTranslate, setLighting, setNormixes, setShowWithin, setTokenProperty, setVisibilityFlags, sumVertexNormals2
Methods inherited from class org.jmol.util.MeshSurface
addPolygon, addPolygonC, addQuad, addTriangle, addTriangleCheck, addV, addVCVal, getFaces, getMeshSlicer, getSlabColor, getSlabType, getSphereData, getSphericalInterpolationFraction, getVertices, invalidatePolygons, newMesh, resetSlab, setABC, setBox, setColix, setColixBack, setPolygonCount, setTranslucentVertices, slabBrillouin, slabPolygonsList
-
Field Details
-
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
-
assocGridPointNormals
-
mergeAssociatedNormalCount
private int mergeAssociatedNormalCount -
centers
javajs.util.P3[] centers -
contourValues
float[] contourValues -
contourColixes
short[] contourColixes -
colorEncoder
-
bsVdw
javajs.util.BS bsVdw -
colorPhased
public boolean colorPhased -
probeValues
public float[] probeValues
-
-
Constructor Details
-
IsosurfaceMesh
- Parameters:
vwr
-thisID
-colix
-index
-
-
-
Method Details
-
getResolution
public float getResolution()- Overrides:
getResolution
in classMeshSurface
-
clearType
-
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 classMesh
-
setMerged
public void setMerged(boolean TF) -
sumVertexNormals
protected void sumVertexNormals(javajs.util.T3[] vertices, javajs.util.V3[] vectorSums) - Overrides:
sumVertexNormals
in classMesh
-
getCenters
javajs.util.P3[] getCenters() -
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
-
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
- Parameters:
vwr
-- Returns:
- a Hashtable containing "values" and "colors"
-
deleteContours
void deleteContours() -
setVertexColorMap
void setVertexColorMap() -
setVertexColixesForAtoms
-
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
remaps colors based on a new color scheme or translucency level- Parameters:
vwr
-ce
-translucentLevel
-
-
reinitializeLightingAndColor
-
getBoundingBox
public javajs.util.P3[] getBoundingBox()- Overrides:
getBoundingBox
in classMesh
-
setBoundingBox
public void setBoundingBox(javajs.util.P3[] pts) - Overrides:
setBoundingBox
in classMeshSurface
-
merge
-
mergePolygons
-
getUnitCell
- Overrides:
getUnitCell
in classMesh
- Returns:
- unitcell
-
fixLattice
void fixLattice() -
getMinDistance2ForVertexGrouping
protected float getMinDistance2ForVertexGrouping()- Overrides:
getMinDistance2ForVertexGrouping
in classMesh
-
getVisibleVertexBitSet
public javajs.util.BS getVisibleVertexBitSet()- Overrides:
getVisibleVertexBitSet
in classMesh
-
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
-
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)
-