public class MeshCapper
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
private class |
MeshCapper.CapVertex
A class to provide linked vertices for MeshCapper
|
| Modifier and Type | Field and Description |
|---|---|
private static int |
ASCENDER |
private java.util.Map<java.lang.Integer,MeshCapper.CapVertex> |
capMap
initialization only
|
private static int |
DESCENDER |
private boolean |
dumping
for debugging
|
private static int |
LAST |
private javajs.util.Lst<MeshCapper.CapVertex[]> |
lstRegions
dynamic region processing.
|
private int |
nRegions
informational only
|
private int |
nTriangles
informational only
|
private MeshSlicer |
slicer
source of edges; consumer of triangles
|
private boolean |
testing
for debugging
|
private javajs.util.Lst<MeshCapper.CapVertex> |
vertices |
| Constructor and Description |
|---|
MeshCapper() |
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
addEdge(int ipt1,
int ipt2,
int thisSet)
Input method from MeshSlicer.
|
private MeshCapper.CapVertex |
addPoint(int thisSet,
int i)
The MeshSlicer class manages all introduction of vertices; we must pass on
to it the subset of vertices from the original Jmol isosurface being
capped.
|
private void |
addTriangle(MeshCapper.CapVertex v0,
MeshCapper.CapVertex v1,
MeshCapper.CapVertex v2,
java.lang.String note)
Add the triangle and remove v1 from the chain.
|
private boolean |
checkWinding(MeshCapper.CapVertex v0,
MeshCapper.CapVertex v1,
MeshCapper.CapVertex v2)
Check for CCW winding.
|
(package private) void |
clear() |
(package private) void |
createCap(javajs.util.V3 norm)
Entry point when finished generating edges.
|
private void |
drawTriangle(int index,
MeshCapper.CapVertex v0,
MeshCapper.CapVertex v1,
MeshCapper.CapVertex v2,
java.lang.String color)
for debugging
|
private javajs.util.T3 |
getInputPoint(MeshCapper.CapVertex v)
for debugging
|
private MeshCapper.CapVertex |
getLastPoint(MeshCapper.CapVertex v)
Find the lowest ascender or descender above scan line bounding the region
for this point.
|
private void |
newRegion(MeshCapper.CapVertex v)
Add a new region to the list of regions.
|
private void |
outputTriangle(int ipt1,
int ipt2,
int ipt3)
Export triangle to MeshSlicer
|
private MeshCapper.CapVertex |
process(MeshCapper.CapVertex v)
Handle the point; mark as processed.
|
private void |
processMonotonic(MeshCapper.CapVertex v,
boolean isDescending)
Process a standard monotonic region, cleaving off as many triangles as
possible.
|
private MeshCapper.CapVertex |
processSplit(MeshCapper.CapVertex v,
MeshCapper.CapVertex last)
Process what M3O refer to as a "split" vertex, which we handle differently
here, cloning the "helper" point and the "split" point, creating a new
region if necessary, and then swapping pointers.
|
(package private) MeshCapper |
set(MeshSlicer slicer) |
private MeshCapper.CapVertex[] |
test(MeshCapper.CapVertex[] vs) |
private MeshSlicer slicer
private boolean dumping
private boolean testing
private java.util.Map<java.lang.Integer,MeshCapper.CapVertex> capMap
private javajs.util.Lst<MeshCapper.CapVertex> vertices
private javajs.util.Lst<MeshCapper.CapVertex[]> lstRegions
private static final int DESCENDER
private static final int ASCENDER
private static final int LAST
private int nTriangles
private int nRegions
MeshCapper set(MeshSlicer slicer)
slicer - void clear()
void addEdge(int ipt1,
int ipt2,
int thisSet)
ipt1 - ipt2 - thisSet - private MeshCapper.CapVertex addPoint(int thisSet, int i)
thisSet - i - private javajs.util.T3 getInputPoint(MeshCapper.CapVertex v)
v - private void outputTriangle(int ipt1,
int ipt2,
int ipt3)
ipt1 - ipt2 - ipt3 - private MeshCapper.CapVertex[] test(MeshCapper.CapVertex[] vs)
void createCap(javajs.util.V3 norm)
norm - private MeshCapper.CapVertex process(MeshCapper.CapVertex v)
v - private void processMonotonic(MeshCapper.CapVertex v, boolean isDescending)
v - isDescending - private MeshCapper.CapVertex processSplit(MeshCapper.CapVertex v, MeshCapper.CapVertex last)
v - last - "helper" or left edgeprivate void newRegion(MeshCapper.CapVertex v)
v - private MeshCapper.CapVertex getLastPoint(MeshCapper.CapVertex v)
v - private boolean checkWinding(MeshCapper.CapVertex v0, MeshCapper.CapVertex v1, MeshCapper.CapVertex v2)
v0 - v1 - v2 - private void addTriangle(MeshCapper.CapVertex v0, MeshCapper.CapVertex v1, MeshCapper.CapVertex v2, java.lang.String note)
v0 - v1 - v2 - note - private void drawTriangle(int index,
MeshCapper.CapVertex v0,
MeshCapper.CapVertex v1,
MeshCapper.CapVertex v2,
java.lang.String color)
index - v0 - v1 - v2 - color -