Package org.jmol.jvxl.readers
Class SurfaceReader
java.lang.Object
org.jmol.jvxl.readers.SurfaceReader
- All Implemented Interfaces:
VertexDataServer
- Direct Known Subclasses:
JvxlXmlReader
,PeriodicVolumeFileReader
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected float[]
protected P3
protected char
protected int
protected int
protected int
protected float
protected float
protected float
protected M3
protected M3
protected float
protected float
protected int
protected int
protected SB
protected boolean
protected boolean
protected boolean
protected boolean
protected boolean
protected boolean
protected boolean
protected boolean
protected String
protected float
protected float[]
protected JvxlData
protected boolean
protected boolean
protected boolean
protected boolean
protected String
protected SB
protected int
protected BS
protected MarchingCubes
protected MarchingSquares
protected MeshData
protected MeshDataServer
protected float[]
protected long
protected int
protected int
protected int
protected int
protected Parameters
protected final P3
protected QuantumPlaneCalculation
protected SurfaceGenerator
protected P3
protected V3[]
protected int[]
protected float[][][]
protected P3
protected P3
protected int
protected float[][]
-
Method Summary
Modifier and TypeMethodDescriptionint
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)protected int
int
addVertexCopy
(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.protected abstract void
protected void
discardTempDataSR
(boolean discardAll) protected void
float[]
getMinMaxMappedValues
(boolean haveData) float[]
getPlane
(int x) protected float[]
getPlaneSR
(int x) protected float
getSPF
(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, T3 pointA, V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, T3 ptReturn) int
protected float
getSurfacePointAndFraction
(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, T3 pointA, V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, T3 ptReturn) int
getSurfacePointIndexAndFraction
(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, P3i offset, int vA, int vB, float valueA, float valueB, T3 pointA, 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 onlyprotected float
getValue2
(int x, int y, int z, int ptyz) float
getValueAtPoint
(T3 pt, boolean getSource) protected boolean
gotoAndReadVoxelData
(boolean isMapData) protected void
gotoData
(int n, int nPoints) protected void
protected void
protected String
protected abstract void
readSurfaceData
(boolean isMapData) protected abstract boolean
readVolumeData
(boolean isMapData) protected abstract boolean
readVolumeParameters
(boolean isMapData) void
selectPocket
(boolean doExclude) protected void
protected void
setOutputChannel
(OC out) protected void
protected void
protected void
protected void
protected void
void
slabIsosurface
(Lst<Object[]> slabInfo)
-
Field Details
-
sg
-
meshDataServer
-
params
-
meshData
-
jvxlData
-
haveSurfaceAtoms
protected boolean haveSurfaceAtoms -
allowSigma
protected boolean allowSigma -
isProgressive
protected boolean isProgressive -
isXLowToHigh
protected boolean isXLowToHigh -
isQuiet
protected boolean isQuiet -
isPeriodic
protected boolean isPeriodic -
dataMin
protected float dataMin -
dataMax
protected float dataMax -
dataMean
protected float dataMean -
xyzMin
-
xyzMax
-
center
-
anisotropy
protected float[] anisotropy -
isAnisotropic
protected boolean isAnisotropic -
eccentricityMatrix
-
eccentricityMatrixInverse
-
isEccentric
protected boolean isEccentric -
eccentricityScale
protected float eccentricityScale -
eccentricityRatio
protected float eccentricityRatio -
volumetricOrigin
-
volumetricVectors
-
voxelCounts
protected int[] voxelCounts -
voxelData
protected float[][][] voxelData -
nBytes
protected long nBytes -
nDataPoints
protected int nDataPoints -
nPointsX
protected int nPointsX -
nPointsY
protected int nPointsY -
nPointsZ
protected int nPointsZ -
isJvxl
protected boolean isJvxl -
edgeFractionBase
protected int edgeFractionBase -
edgeFractionRange
protected int edgeFractionRange -
colorFractionBase
protected int colorFractionBase -
colorFractionRange
protected int colorFractionRange -
jvxlFileHeaderBuffer
-
fractionData
-
jvxlEdgeDataRead
-
jvxlColorDataRead
-
jvxlVoxelBitSet
-
jvxlDataIsColorMapped
protected boolean jvxlDataIsColorMapped -
jvxlDataIsPrecisionColor
protected boolean jvxlDataIsPrecisionColor -
jvxlDataIs2dContour
protected boolean jvxlDataIs2dContour -
jvxlDataIsColorDensity
protected boolean jvxlDataIsColorDensity -
jvxlCutoff
protected float jvxlCutoff -
jvxlCutoffRange
protected float[] jvxlCutoffRange -
jvxlNSurfaceInts
protected int jvxlNSurfaceInts -
cJvxlEdgeNaN
protected char cJvxlEdgeNaN -
contourVertexCount
protected int contourVertexCount -
marchingSquares
-
marchingCubes
-
yzPlanes
protected float[][] yzPlanes -
yzCount
protected int yzCount -
qpc
-
ptTemp
-
minMax
protected float[] minMax
-
-
Method Details
-
closeReader
protected abstract void closeReader() -
setOutputChannel
- Parameters:
out
-
-
newVoxelDataCube
protected void newVoxelDataCube() -
setVolumeDataV
-
readVolumeParameters
protected abstract boolean readVolumeParameters(boolean isMapData) -
readVolumeData
protected abstract boolean readVolumeData(boolean isMapData) -
discardTempDataSR
protected void discardTempDataSR(boolean discardAll) -
readSurfaceData
- Throws:
Exception
-
gotoAndReadVoxelData
protected boolean gotoAndReadVoxelData(boolean isMapData) -
gotoData
- Parameters:
n
-nPoints
-- Throws:
Exception
-
readColorData
-
getPlane
public float[] getPlane(int x) - Specified by:
getPlane
in interfaceVertexDataServer
-
getPlaneSR
protected float[] getPlaneSR(int x) -
getValue
public float getValue(int x, int y, int z, int ptyz) Description copied from interface:VertexDataServer
for readers only- Specified by:
getValue
in interfaceVertexDataServer
- Returns:
- value[x][y][z]
-
getValue2
protected float getValue2(int x, int y, int z, int ptyz) -
postProcessVertices
protected void postProcessVertices() -
getSurfacePointIndexAndFraction
public int getSurfacePointIndexAndFraction(float cutoff, boolean isCutoffAbsolute, int x, int y, int z, P3i offset, int vA, int vB, float valueA, float valueB, T3 pointA, 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 interfaceVertexDataServer
vA
- [0:7]vB
- [0:7]edgeVector
- vector from A to B- Returns:
- new vertex index or Integer.MAX_VALUE
-
getSurfacePointAndFraction
-
getSPF
protected float getSPF(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, T3 pointA, V3 edgeVector, int x, int y, int z, int vA, int vB, float[] fReturn, T3 ptReturn) - Parameters:
cutoff
-isCutoffAbsolute
-valueA
-valueB
-pointA
-edgeVector
-x
- TODOy
- TODOz
- TODOvA
-vB
-fReturn
-ptReturn
-- Returns:
- fractional distance from A to B
-
addVertexCopy
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 interfaceVertexDataServer
assocVertex
- unique association vertex or -1- Returns:
- new vertex index
-
addVC
-
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 interfaceVertexDataServer
iContour
- TODO- Returns:
- polygon index or -1
-
getMinMaxMappedValues
public float[] getMinMaxMappedValues(boolean haveData) -
selectPocket
public void selectPocket(boolean doExclude) - Parameters:
doExclude
-
-
slabIsosurface
-
setVertexAnisotropy
-
setVectorAnisotropy
-
setVolumetricAnisotropy
protected void setVolumetricAnisotropy() -
setVolumetricOriginAnisotropy
protected void setVolumetricOriginAnisotropy() -
setBBox
-
getValueAtPoint
- Parameters:
pt
-getSource
- TODO- Returns:
- value
-
finalizeMapping
protected void finalizeMapping() -
getSurfaceAtomIndex
public int getSurfaceAtomIndex()
-