public class Polyhedra extends AtomShape implements Comparator<Object[]>
Modifier and Type | Field and Description |
---|---|
private boolean |
bondedOnly |
private BS |
bsPolys |
private BS |
bsVertexCount |
private BS |
bsVertices |
private javajs.util.P3 |
center |
private BS |
centers |
private static float |
CONVEX_HULL_MAX |
private static float |
DEFAULT_FACECENTEROFFSET |
private static float |
DEFAULT_PLANAR_PARAM
a dot product comparison term
|
private float |
distanceRef |
int |
drawEdges |
static int |
EDGES_ALL |
static int |
EDGES_FRONT |
private static int |
EDGES_NONE |
private static int |
FACE_COUNT_MAX |
(package private) float |
faceCenterOffset |
private boolean |
haveBitSetVertices |
private boolean |
iHaveCenterBitSet |
private Map<String,SV> |
info |
private boolean |
isAuto |
(package private) boolean |
isCollapsed |
(package private) boolean |
isFull |
private static float |
MAX_DISTANCE_TO_PLANE |
private static int |
MAX_OTHER |
private static int |
MAX_VERTICES |
private static int |
MODE_BITSET |
private static int |
MODE_BONDING |
private static int |
MODE_INFO |
private static int |
MODE_POINTS |
private static int |
MODE_RADIUS |
private static int |
MODE_UNITCELL |
private int |
modelIndex |
private javajs.util.V3[] |
normalsT |
private int |
nPoints |
private int |
nVertices |
private javajs.util.P3[] |
otherAtoms |
private float |
planarParam |
private int[][] |
planesT |
private float |
pointScale |
int |
polyhedronCount |
Polyhedron[] |
polyhedrons |
private float |
radius |
private float |
radiusMin |
private static javajs.util.P3 |
randomPoint |
private String |
thisID |
private boolean |
useUnitCell |
private javajs.util.V3 |
vAB |
private javajs.util.V3 |
vAC |
private javajs.util.V3 |
vBC |
ac, atoms, bsSizeDefault, colixes, isActive, mad, mads, monomerCount, paletteIDs
bsColixSet, bsSizeSet, isBioShape, ms, myType, RADIUS_MAX, shapeID, translucentAllowed, translucentLevel, vf, vwr
Constructor and Description |
---|
Polyhedra() |
Modifier and Type | Method and Description |
---|---|
private Object |
addEdge(javajs.util.Lst<int[]> faceEdgeList,
Map<String,Object> htEdgeMap,
Integer normix,
int[] p1,
int i,
javajs.util.P3[] points)
Check each edge to see that
(a) it has not been used before
(b) it does not have vertex points on both sides of it
(c) if it runs opposite another edge, then both edge masks are set properly
|
private void |
addFacet(int i,
int j,
int k,
javajs.util.P3 ptRef,
javajs.util.P3[] points,
javajs.util.V3[] normals,
int[][] faces,
int planeCount,
int nRef,
boolean isWindingOK,
javajs.util.V3 vTemp)
Add one of the three "facets" that compose the planes of a "collapsed" polyhedron.
|
private void |
addPolyhedron(Polyhedron p) |
private BS |
andBitSet(BS bs) |
private void |
buildPolyhedra() |
private float |
checkFacet(javajs.util.P3[] points,
int nPoints,
int[] t,
int index,
javajs.util.V3 norm,
javajs.util.P4 pTemp,
javajs.util.V3 vNorm,
javajs.util.V3 vAC,
Map<Integer,Object[]> htNormMap,
Map<String,Object> htEdgeMap,
float planarParam,
BS bsTemp,
Object[] edgeTest)
Clean out overlapping triangles based on normals and cross products.
|
private boolean |
checkID(String thisID) |
int |
compare(Object[] a,
Object[] b) |
private Polyhedron |
constructBitSetPolyhedron(Atom atom) |
private Polyhedron |
constructBondsPolyhedron(Atom atom,
int otherAtomCount) |
private Polyhedron |
constructRadiusPolyhedron(Atom atom,
AtomIndexIterator iter) |
private Polyhedron |
constructUnitCellPolygon(Atom atom,
boolean useBondAlgorithm) |
private void |
deletePolyhedra() |
private Polyhedron |
findPoly(String id,
int iatom,
boolean allowCollapsed) |
private BS |
findPolyBS(BS bsCenters) |
private int[][] |
getFaces(int[][] triangles,
int triangleCount,
Map<Integer,Object[]> htNormMap)
Face: a CCW loop of edges all (within tolerance) in the same plane.
|
private int[][] |
getFaceTriangles(int n,
Map<Integer,Object[]> htNormMap,
int triangleCount) |
int |
getIndexFromName(String id) |
Object |
getProperty(String property,
int i) |
boolean |
getPropertyData(String property,
Object[] data) |
Object |
getShapeDetail() |
String |
getShapeState() |
private boolean |
isMatch(String id) |
private boolean |
isPlanar(javajs.util.P3 pt1,
javajs.util.P3 pt2,
javajs.util.P3 pt3,
javajs.util.P3 ptX) |
private void |
offsetPolyhedra(javajs.util.P3 value) |
private void |
pointsPolyhedra(BS bs,
float pointScale) |
private void |
scalePolyhedra(float scale) |
private int |
setGap(javajs.util.P3 atom,
int otherAtomCount) |
void |
setModelVisibilityFlags(BS bsModels) |
void |
setProperty(String propertyName,
Object value,
BS bs) |
private void |
setVisible(boolean visible) |
private boolean |
testDiff(javajs.util.P3 a1,
javajs.util.P3 b1,
javajs.util.P3 a2,
javajs.util.P3 b2) |
private Polyhedron |
validatePolyhedron(javajs.util.P3 atomOrPt,
int vertexCount) |
checkColixLength, getInfoAsString, getSize, initModelSet, initShape, setAtomClickability, setColixAndPalette, setPropAS, setSize, setSize2, setSizeRD, setSizeRD2
appendCmd, checkBoundsMinMax, checkObjectClicked, checkObjectDragged, checkObjectHovered, coordinateInRange, encodeColor, findNearestAtomIndex, getColix, getColixA, getColixB, getColixI, getColorCommand, getColorCommandUnk, getFontCommand, getPropShape, getSizeG, getTranslucentLabel, initializeShape, replaceGroup, setModelSet, setPropS, setShapeSizeRD, wasClicked
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
comparing, comparing, comparingDouble, comparingInt, comparingLong, equals, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
private static final float DEFAULT_FACECENTEROFFSET
private static final int EDGES_NONE
public static final int EDGES_ALL
public static final int EDGES_FRONT
private static final int MAX_VERTICES
private static final int FACE_COUNT_MAX
private static final int MAX_OTHER
private javajs.util.P3[] otherAtoms
private javajs.util.V3[] normalsT
private int[][] planesT
private static final javajs.util.P3 randomPoint
private static final int MODE_BONDING
private static final int MODE_POINTS
private static final int MODE_RADIUS
private static final int MODE_BITSET
private static final int MODE_UNITCELL
private static final int MODE_INFO
private static final float DEFAULT_PLANAR_PARAM
private static final float CONVEX_HULL_MAX
public int polyhedronCount
public Polyhedron[] polyhedrons
public int drawEdges
private float radius
private float radiusMin
private float pointScale
private int nVertices
float faceCenterOffset
boolean isCollapsed
boolean isFull
private boolean iHaveCenterBitSet
private boolean bondedOnly
private boolean haveBitSetVertices
private BS centers
private String thisID
private javajs.util.P3 center
private BS bsVertices
private BS bsVertexCount
private boolean useUnitCell
private int nPoints
private float planarParam
private float distanceRef
private int modelIndex
private boolean isAuto
private BS bsPolys
private final javajs.util.V3 vAB
private final javajs.util.V3 vAC
private final javajs.util.V3 vBC
private static float MAX_DISTANCE_TO_PLANE
public int compare(Object[] a, Object[] b)
compare
in interface Comparator<Object[]>
public void setProperty(String propertyName, Object value, BS bs)
setProperty
in class Shape
private void pointsPolyhedra(BS bs, float pointScale)
private void scalePolyhedra(float scale)
private void offsetPolyhedra(javajs.util.P3 value)
public int getIndexFromName(String id)
getIndexFromName
in class Shape
public Object getProperty(String property, int i)
getProperty
in class Shape
public boolean getPropertyData(String property, Object[] data)
getPropertyData
in class Shape
private boolean checkID(String thisID)
private Polyhedron findPoly(String id, int iatom, boolean allowCollapsed)
id
- may be nulliatom
- may be < 0 to (along with id==null) to get matching polyhedronallowCollapsed
- private boolean isMatch(String id)
public Object getShapeDetail()
getShapeDetail
in class Shape
private void deletePolyhedra()
private void setVisible(boolean visible)
private void buildPolyhedra()
private void addPolyhedron(Polyhedron p)
private Polyhedron constructBondsPolyhedron(Atom atom, int otherAtomCount)
private Polyhedron constructUnitCellPolygon(Atom atom, boolean useBondAlgorithm)
private Polyhedron constructBitSetPolyhedron(Atom atom)
private Polyhedron constructRadiusPolyhedron(Atom atom, AtomIndexIterator iter)
private int setGap(javajs.util.P3 atom, int otherAtomCount)
private Polyhedron validatePolyhedron(javajs.util.P3 atomOrPt, int vertexCount)
private int[][] getFaceTriangles(int n, Map<Integer,Object[]> htNormMap, int triangleCount)
private void addFacet(int i, int j, int k, javajs.util.P3 ptRef, javajs.util.P3[] points, javajs.util.V3[] normals, int[][] faces, int planeCount, int nRef, boolean isWindingOK, javajs.util.V3 vTemp)
i
- j
- k
- ptRef
- slightly out from the center; based on centerOffset parameterpoints
- normals
- faces
- planeCount
- nRef
- isWindingOK
- vTemp
- private float checkFacet(javajs.util.P3[] points, int nPoints, int[] t, int index, javajs.util.V3 norm, javajs.util.P4 pTemp, javajs.util.V3 vNorm, javajs.util.V3 vAC, Map<Integer,Object[]> htNormMap, Map<String,Object> htEdgeMap, float planarParam, BS bsTemp, Object[] edgeTest)
points
- nPoints
- t
- index
- norm
- pTemp
- vNorm
- vAC
- htNormMap
- htEdgeMap
- planarParam
- bsTemp
- edgeTest
- private Object addEdge(javajs.util.Lst<int[]> faceEdgeList, Map<String,Object> htEdgeMap, Integer normix, int[] p1, int i, javajs.util.P3[] points)
faceEdgeList
- htEdgeMap
- normix
- p1
- i
- points
- private boolean testDiff(javajs.util.P3 a1, javajs.util.P3 b1, javajs.util.P3 a2, javajs.util.P3 b2)
private boolean isPlanar(javajs.util.P3 pt1, javajs.util.P3 pt2, javajs.util.P3 pt3, javajs.util.P3 ptX)
private int[][] getFaces(int[][] triangles, int triangleCount, Map<Integer,Object[]> htNormMap)
triangles
- triangleCount
- htNormMap
- public void setModelVisibilityFlags(BS bsModels)
setModelVisibilityFlags
in class Shape
public String getShapeState()
getShapeState
in class AtomShape