public class Isosurface extends MeshCollection implements MeshDataServer
Modifier and Type | Field and Description |
---|---|
private java.lang.String |
actualID |
(package private) boolean |
allowMesh |
private boolean |
associateNormals |
private int |
atomIndex |
private javajs.util.P3 |
center |
private int |
colorType |
private float[] |
cutoffRange |
private short |
defaultColix |
private boolean |
explicitContours |
protected boolean |
iHaveBitSets |
private boolean |
iHaveModelIndex |
private boolean |
isColorExplicit |
private IsosurfaceMesh[] |
isomeshes |
private boolean |
isPhaseColored |
private boolean |
isWithinNot |
protected JvxlData |
jvxlData |
int[] |
keyXy |
private javajs.util.P4 |
lcaoDir |
private static int |
MAX_OBJECT_CLICK_DISTANCE_SQUARED |
private short |
meshColix |
private float[] |
moLinearCombination |
private int |
moNumber |
private int |
nLCAO |
private javajs.util.P3i |
ptXY |
private float |
scale3d |
private java.lang.String |
script |
private java.lang.String |
scriptAppendix |
protected SurfaceGenerator |
sg |
protected IsosurfaceMesh |
thisMesh |
private float |
withinDistance2 |
private javajs.util.Lst<javajs.util.P3> |
withinPoints |
bsDisplay, colix, color, connections, currentMesh, displayWithinDistance2, displayWithinPoints, explicitID, htObjects, isDisplayWithinNot, isFixed, linkedMesh, meshCount, meshes, modelIndex, myType, nUnnamed, pickedMesh, pickedModel, pickedPt, pickedVertex, PREVIOUS_MESH_ID, previousMeshID, title
bsColixSet, bsSizeSet, isBioShape, ms, RADIUS_MAX, shapeID, translucentAllowed, translucentLevel, vf, vwr
Constructor and Description |
---|
Isosurface() |
Modifier and Type | Method and Description |
---|---|
protected void |
addMeshInfo(IsosurfaceMesh mesh,
java.util.Map<java.lang.String,java.lang.Object> info) |
void |
addRequiredFile(java.lang.String fileName) |
int |
addTriangleCheck(int iA,
int iB,
int iC,
int check,
int iContour,
boolean isAbsolute,
int color)
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(javajs.util.T3 vertexXYZ,
float value,
int assocVertex,
boolean asCopy)
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,
Mesh m) |
javajs.util.P3[] |
calculateGeodesicSurface(BS bsSelected,
float envelopeRadius) |
private java.lang.Object |
calculateVolumeOrArea(boolean isArea) |
java.util.Map<java.lang.String,java.lang.Object> |
checkObjectClicked(int x,
int y,
int action,
BS bsVisible,
boolean drawPicking) |
boolean |
checkObjectHovered(int x,
int y,
BS bsVisible) |
protected void |
clearSg() |
private void |
createLcaoLobe(javajs.util.V3 lobeAxis,
float factor,
int nElectrons) |
protected void |
discardTempData(boolean discardAll) |
private void |
drawLcaoCartoon(javajs.util.V3 z,
javajs.util.V3 x,
javajs.util.V3 rotAxis,
int nElectrons) |
private void |
ensureMeshSource() |
void |
fillMeshData(MeshData meshData,
int mode,
IsosurfaceMesh mesh) |
private java.lang.String |
findValue(int x,
int y,
boolean isPicking,
BS bsVisible) |
protected void |
getCapSlabInfo(java.lang.String script) |
private java.lang.Object[] |
getCapSlabObject(java.lang.String s,
boolean isCap)
legacy -- for some scripts with early isosurface slabbing
|
java.lang.String |
getCmd(int index) |
private float[] |
getDataRange() |
private short |
getDefaultColix() |
private void |
getMeshCommand(javajs.util.SB sb,
int i) |
float[] |
getPlane(int x) |
static java.lang.String |
getPolygonColorData(int ccount,
short[] colixes,
int[][] polygons,
BS bsSlabDisplay) |
java.lang.Object |
getProperty(java.lang.String property,
int index) |
boolean |
getPropertyData(java.lang.String property,
java.lang.Object[] data) |
protected java.lang.Object |
getPropI(java.lang.String property) |
private boolean |
getScriptBitSets(java.lang.String script,
BS[] bsCmd) |
javajs.util.Lst<java.util.Map<java.lang.String,java.lang.Object>> |
getShapeDetail() |
java.lang.String |
getShapeState() |
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)
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.
|
float |
getValue(int x,
int y,
int z,
int ptyz)
for readers only
|
private void |
hoverKey(int x,
int y) |
private void |
initializeIsosurface() |
void |
initShape() |
private void |
initState() |
void |
invalidateTriangles() |
private boolean |
isPickable(IsosurfaceMesh m,
BS bsVisible) |
void |
merge(Shape shape)
called by ParallelProcessor at completion
|
protected void |
newSg() |
boolean |
notifySurfaceGenerationCompleted() |
void |
notifySurfaceMappingCompleted() |
private void |
setBsVdw() |
private void |
setColorPhase(IsosurfaceMesh m,
short colix0,
short colix1) |
private void |
setIsoMeshColor(IsosurfaceMesh m,
java.lang.String color) |
private void |
setJvxlInfo() |
private void |
setMeshI() |
void |
setOutputChannel(javajs.api.GenericBinaryDocument binaryDoc,
javajs.util.OC out) |
void |
setProperty(java.lang.String propertyName,
java.lang.Object value,
BS bs) |
private void |
setPropertySuper(java.lang.String propertyName,
java.lang.Object value,
BS bs) |
protected void |
setPropI(java.lang.String propertyName,
java.lang.Object value,
BS bs) |
protected void |
setScriptInfo(java.lang.String strCommand) |
protected void |
slabPolygons(java.lang.Object[] slabInfo) |
checkExplicit, clean, deleteMeshI, deleteMeshKey, getIndexFromName, getMesh, getMeshList, getPickedPoint, getPropDataMC, getPropMC, setModelVisibilityFlags, setPropMC, setStatusPicked, setTokenProperty
appendCmd, checkBoundsMinMax, checkObjectDragged, coordinateInRange, encodeColor, findNearestAtomIndex, getColix, getColixA, getColixB, getColixI, getColorCommand, getColorCommandUnk, getFontCommand, getSize, getSizeG, getTranslucentLabel, initializeShape, initModelSet, setAtomClickability, setModelSet, setPropS, setShapeSizeRD, setShapeVisibility, setSize, setSizeRD, wasClicked
private IsosurfaceMesh[] isomeshes
protected IsosurfaceMesh thisMesh
private java.lang.String actualID
protected boolean iHaveBitSets
private boolean explicitContours
private int atomIndex
private int moNumber
private float[] moLinearCombination
private int colorType
private short defaultColix
private short meshColix
private javajs.util.P3 center
private float scale3d
private boolean isPhaseColored
private boolean isColorExplicit
private java.lang.String scriptAppendix
protected SurfaceGenerator sg
protected JvxlData jvxlData
private float withinDistance2
private boolean isWithinNot
private javajs.util.Lst<javajs.util.P3> withinPoints
private float[] cutoffRange
boolean allowMesh
private java.lang.String script
private boolean iHaveModelIndex
private int nLCAO
private javajs.util.P4 lcaoDir
private boolean associateNormals
private static final int MAX_OBJECT_CLICK_DISTANCE_SQUARED
private final javajs.util.P3i ptXY
public int[] keyXy
public void allocMesh(java.lang.String thisID, Mesh m)
allocMesh
in class MeshCollection
public void initShape()
initShape
in class MeshCollection
protected void newSg()
protected void clearSg()
public void setProperty(java.lang.String propertyName, java.lang.Object value, BS bs)
setProperty
in class Shape
protected void setPropI(java.lang.String propertyName, java.lang.Object value, BS bs)
private void setIsoMeshColor(IsosurfaceMesh m, java.lang.String color)
private void setColorPhase(IsosurfaceMesh m, short colix0, short colix1)
private void ensureMeshSource()
protected void slabPolygons(java.lang.Object[] slabInfo)
private void setPropertySuper(java.lang.String propertyName, java.lang.Object value, BS bs)
public boolean getPropertyData(java.lang.String property, java.lang.Object[] data)
getPropertyData
in class Shape
public java.lang.Object getProperty(java.lang.String property, int index)
getProperty
in class Shape
protected java.lang.Object getPropI(java.lang.String property)
private float[] getDataRange()
private java.lang.Object calculateVolumeOrArea(boolean isArea)
public static java.lang.String getPolygonColorData(int ccount, short[] colixes, int[][] polygons, BS bsSlabDisplay)
public java.lang.String getShapeState()
getShapeState
in class Shape
private void getMeshCommand(javajs.util.SB sb, int i)
private boolean getScriptBitSets(java.lang.String script, BS[] bsCmd)
protected void getCapSlabInfo(java.lang.String script)
private java.lang.Object[] getCapSlabObject(java.lang.String s, boolean isCap)
s
- isCap
- private void initializeIsosurface()
private void initState()
private void setMeshI()
protected void discardTempData(boolean discardAll)
private short getDefaultColix()
private void drawLcaoCartoon(javajs.util.V3 z, javajs.util.V3 x, javajs.util.V3 rotAxis, int nElectrons)
private void createLcaoLobe(javajs.util.V3 lobeAxis, float factor, int nElectrons)
public void invalidateTriangles()
invalidateTriangles
in interface MeshDataServer
public void setOutputChannel(javajs.api.GenericBinaryDocument binaryDoc, javajs.util.OC out)
setOutputChannel
in interface MeshDataServer
public void fillMeshData(MeshData meshData, int mode, IsosurfaceMesh mesh)
fillMeshData
in interface MeshDataServer
public boolean notifySurfaceGenerationCompleted()
notifySurfaceGenerationCompleted
in interface MeshDataServer
public void notifySurfaceMappingCompleted()
notifySurfaceMappingCompleted
in interface MeshDataServer
private void setBsVdw()
public javajs.util.P3[] calculateGeodesicSurface(BS bsSelected, float envelopeRadius)
calculateGeodesicSurface
in interface MeshDataServer
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)
VertexDataServer
getSurfacePointIndexAndFraction
in interface VertexDataServer
vA
- [0:7]vB
- [0:7]edgeVector
- vector from A to Bpublic int addVertexCopy(javajs.util.T3 vertexXYZ, float value, int assocVertex, boolean asCopy)
VertexDataServer
addVertexCopy
in interface VertexDataServer
assocVertex
- unique association vertex or -1public int addTriangleCheck(int iA, int iB, int iC, int check, int iContour, boolean isAbsolute, int color)
VertexDataServer
addTriangleCheck
in interface VertexDataServer
iContour
- TODOprotected void setScriptInfo(java.lang.String strCommand)
public void addRequiredFile(java.lang.String fileName)
addRequiredFile
in interface MeshDataServer
private void setJvxlInfo()
public javajs.util.Lst<java.util.Map<java.lang.String,java.lang.Object>> getShapeDetail()
getShapeDetail
in class Shape
protected void addMeshInfo(IsosurfaceMesh mesh, java.util.Map<java.lang.String,java.lang.Object> info)
public float[] getPlane(int x)
getPlane
in interface VertexDataServer
public float getValue(int x, int y, int z, int ptyz)
VertexDataServer
getValue
in interface VertexDataServer
public boolean checkObjectHovered(int x, int y, BS bsVisible)
checkObjectHovered
in class Shape
private void hoverKey(int x, int y)
public java.util.Map<java.lang.String,java.lang.Object> checkObjectClicked(int x, int y, int action, BS bsVisible, boolean drawPicking)
checkObjectClicked
in class Shape
drawPicking
- TODOprivate boolean isPickable(IsosurfaceMesh m, BS bsVisible)
private java.lang.String findValue(int x, int y, boolean isPicking, BS bsVisible)
x
- y
- isPicking
- IGNOREDbsVisible
- public void merge(Shape shape)
MeshCollection
merge
in class MeshCollection
public java.lang.String getCmd(int index)