Class Octree
- java.lang.Object
-
- gov.nih.mipav.view.renderer.WildMagic.Poisson.Octree.Octree
-
public class Octree extends java.lang.Object
-
-
Field Summary
Fields Modifier and Type Field Description private intDegreestatic intDIMENSIONstatic floatEPSILONFunctionDatafDataprivate Geometrygeostatic doubleITERATION_POWERstatic doublemaxMemoryUsagestatic intMEMORY_ALLOCATOR_BLOCK_SIZE(package private) NeighborKeyneighborKey(package private) NeighborKey2neighborKey2java.util.Vector<Point3D>normalsstatic floatPAD_SIZEfloatpostNormalSmooth(package private) floatradiusstatic intREAD_SIZEstatic floatROUND_EPSOctNodetree(package private) intwidth
-
Constructor Summary
Constructors Constructor Description Octree(int _Degree)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static intAddTriangles(CoredMeshData mesh, java.util.Vector<CoredPointIndex>[] edges, java.util.Vector<Point3D> interiorPositions, int offSet)static intAddTriangles(CoredMeshData mesh, java.util.Vector<CoredPointIndex> edges, java.util.Vector<Point3D> interiorPositions, int offSet)voidClipTree()static intEdgeRootCount(OctNode node, int edgeIndex, int maxDepth)voidfinalize1(int refineNeighbors)voidfinalize2(int refineNeighbors)floatgetCenterValue(OctNode node)floatgetCornerValue(OctNode node, int corner)voidgetCornerValueAndNormal(OctNode node, int corner, float[] value, Point3D normal)floatGetDivergence(int[] idx, Point3D normal)floatGetDotProduct(int[] idx)static intGetEdgeLoops(java.util.Vector<Pair<java.lang.Long,java.lang.Long>> edges, java.util.Vector<java.util.Vector<Pair<java.lang.Long,java.lang.Long>>> loops)intGetFixedDepthLaplacian(SparseSymmetricMatrix matrix, int depth, SortedTreeNodes sNodes)floatGetIsoValue()floatGetLaplacian(int[] idx)voidGetMCIsoEdges(OctNode node, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, int sDepth, java.util.Vector<Pair<java.lang.Long,java.lang.Long>> edges)voidGetMCIsoTriangles(float isoValue, CoredMeshData mesh, int fullDepthIso, int nonLinearFit)intGetMCIsoTriangles(OctNode node, CoredMeshData mesh, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, java.util.Vector<Point3D> interiorPositions, int offSet, int sDepth)voidGetMCIsoTriangles(java.lang.Float isoValue, int subdivideDepth, CoredMeshData mesh, int fullDepthIso, int nonLinearFit)intGetRestrictedFixedDepthLaplacian(SparseSymmetricMatrix matrix, int depth, int[] entries, int entryCount, OctNode rNode, float radius, SortedTreeNodes sNodes)intGetRoot(RootInfo ri, float isoValue, int maxDepth, Point3D position, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> normals, Point3D normal, int nonLinearFit)intGetRoot(RootInfo ri, float isoValue, Point3D position, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> normalHash, int nonLinearFit)static intGetRootIndex(OctNode node, int edgeIndex, int maxDepth, int sDepth, RootInfo ri)static booleanGetRootIndex(OctNode node, int edgeIndex, int maxDepth, RootInfo ri)static intGetRootIndex(java.lang.Long key, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, CoredPointIndex index)booleanGetRootPair(RootInfo ri, int maxDepth, RootInfo pair)intHasNormals(OctNode node, float epsilon)static intInteriorFaceRootCount(OctNode node, int faceIndex, int maxDepth)static booleanIsBoundaryEdge(OctNode node, int edgeIndex, int subdivideDepth)static booleanIsBoundaryEdge(OctNode node, int dir, int x, int y, int subdivideDepth)static intIsBoundaryFace(OctNode node, int faceIndex, int subdivideDepth)intLaplacianMatrixIteration(int subdivideDepth)voidNonLinearGetSampleDepthAndWeight(OctNode node, Point3D position, float samplesPerNode, float[] depth, float[] weight)floatNonLinearGetSampleWeight(OctNode node, Point3D position)voidNonLinearSplatOrientedPoint(Point3D position, Point3D normal, int splatDepth, float samplesPerNode, int minDepth, int maxDepth)intNonLinearSplatOrientedPoint(OctNode node, Point3D position, Point3D normal)intNonLinearUpdateWeightContribution(OctNode node, Point3D position, float weight)static voidpause()Pauses the display until the user hits enter.voidPreValidate(float isoValue, int maxDepth, int subdivideDepth)voidPreValidate(OctNode node, float isoValue, int maxDepth, int subdivideDepth)voidprintTree()java.lang.StringreadLine(java.io.InputStream in)intSetBoundaryMCRootPositions(int sDepth, float isoValue, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> boundaryNormalHash, CoredMeshData mesh, int nonLinearFit)voidsetFunctionData(PPolynomial ReconstructionFunction, int maxDepth, int normalize, float normalSmooth)voidSetIsoSurfaceCorners(float isoValue, int subdivideDepth, int fullDepthIso)voidSetLaplacianWeights()intSetMCRootPositions(OctNode node, int sDepth, float isoValue, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> boundaryNormalHash, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> interiorNormalHash, java.util.Vector<Point3D> interiorPositions, CoredMeshData mesh, int nonLinearFit)voidsetNodeIndices(OctNode node, int[] idx)intsetTree(java.lang.String fileName, int maxDepth, int binary, int kernelDepth, float samplesPerNode, float scaleFactor, Point3D center, float[] scale, int resetSamples, int useConfidence)intSolveFixedDepthMatrix(int depth, int startingDepth, SortedTreeNodes sNodes)intSolveFixedDepthMatrix(int depth, SortedTreeNodes sNodes)voidSubdivide(OctNode node, float isoValue, int maxDepth)voidValidate(OctNode node, float isoValue, int maxDepth, int fullDepthIso)voidValidate(OctNode node, float isoValue, int maxDepth, int fullDepthIso, int subdivideDepth)
-
-
-
Field Detail
-
DIMENSION
public static int DIMENSION
-
neighborKey
NeighborKey neighborKey
-
neighborKey2
NeighborKey2 neighborKey2
-
radius
float radius
-
width
int width
-
maxMemoryUsage
public static double maxMemoryUsage
-
normals
public java.util.Vector<Point3D> normals
-
postNormalSmooth
public float postNormalSmooth
-
tree
public OctNode tree
-
fData
public FunctionData fData
-
ITERATION_POWER
public static double ITERATION_POWER
-
MEMORY_ALLOCATOR_BLOCK_SIZE
public static int MEMORY_ALLOCATOR_BLOCK_SIZE
-
READ_SIZE
public static int READ_SIZE
-
PAD_SIZE
public static float PAD_SIZE
-
EPSILON
public static float EPSILON
-
ROUND_EPS
public static float ROUND_EPS
-
geo
private Geometry geo
-
Degree
private int Degree
-
-
Method Detail
-
setNodeIndices
public void setNodeIndices(OctNode node, int[] idx)
-
NonLinearSplatOrientedPoint
public int NonLinearSplatOrientedPoint(OctNode node, Point3D position, Point3D normal)
-
NonLinearSplatOrientedPoint
public void NonLinearSplatOrientedPoint(Point3D position, Point3D normal, int splatDepth, float samplesPerNode, int minDepth, int maxDepth)
-
NonLinearGetSampleDepthAndWeight
public void NonLinearGetSampleDepthAndWeight(OctNode node, Point3D position, float samplesPerNode, float[] depth, float[] weight)
-
NonLinearUpdateWeightContribution
public int NonLinearUpdateWeightContribution(OctNode node, Point3D position, float weight)
-
pause
public static void pause()
Pauses the display until the user hits enter.
-
readLine
public java.lang.String readLine(java.io.InputStream in) throws java.io.IOException- Throws:
java.io.IOException
-
setTree
public int setTree(java.lang.String fileName, int maxDepth, int binary, int kernelDepth, float samplesPerNode, float scaleFactor, Point3D center, float[] scale, int resetSamples, int useConfidence)
-
setFunctionData
public void setFunctionData(PPolynomial ReconstructionFunction, int maxDepth, int normalize, float normalSmooth)
-
finalize1
public void finalize1(int refineNeighbors)
-
finalize2
public void finalize2(int refineNeighbors)
-
GetDivergence
public final float GetDivergence(int[] idx, Point3D normal)
-
GetLaplacian
public final float GetLaplacian(int[] idx)
-
GetDotProduct
public final float GetDotProduct(int[] idx)
-
GetFixedDepthLaplacian
public int GetFixedDepthLaplacian(SparseSymmetricMatrix matrix, int depth, SortedTreeNodes sNodes)
-
GetRestrictedFixedDepthLaplacian
public int GetRestrictedFixedDepthLaplacian(SparseSymmetricMatrix matrix, int depth, int[] entries, int entryCount, OctNode rNode, float radius, SortedTreeNodes sNodes)
-
LaplacianMatrixIteration
public int LaplacianMatrixIteration(int subdivideDepth)
-
SolveFixedDepthMatrix
public int SolveFixedDepthMatrix(int depth, SortedTreeNodes sNodes)
-
SolveFixedDepthMatrix
public int SolveFixedDepthMatrix(int depth, int startingDepth, SortedTreeNodes sNodes)
-
HasNormals
public int HasNormals(OctNode node, float epsilon)
-
printTree
public void printTree()
-
ClipTree
public void ClipTree()
-
SetLaplacianWeights
public void SetLaplacianWeights()
-
GetMCIsoTriangles
public void GetMCIsoTriangles(float isoValue, CoredMeshData mesh, int fullDepthIso, int nonLinearFit)
-
GetMCIsoTriangles
public void GetMCIsoTriangles(java.lang.Float isoValue, int subdivideDepth, CoredMeshData mesh, int fullDepthIso, int nonLinearFit)
-
getCenterValue
public float getCenterValue(OctNode node)
-
getCornerValue
public float getCornerValue(OctNode node, int corner)
-
getCornerValueAndNormal
public void getCornerValueAndNormal(OctNode node, int corner, float[] value, Point3D normal)
-
GetIsoValue
public float GetIsoValue()
-
SetIsoSurfaceCorners
public void SetIsoSurfaceCorners(float isoValue, int subdivideDepth, int fullDepthIso)
-
Subdivide
public void Subdivide(OctNode node, float isoValue, int maxDepth)
-
InteriorFaceRootCount
public static int InteriorFaceRootCount(OctNode node, int faceIndex, int maxDepth)
-
EdgeRootCount
public static int EdgeRootCount(OctNode node, int edgeIndex, int maxDepth)
-
IsBoundaryFace
public static int IsBoundaryFace(OctNode node, int faceIndex, int subdivideDepth)
-
IsBoundaryEdge
public static boolean IsBoundaryEdge(OctNode node, int edgeIndex, int subdivideDepth)
-
IsBoundaryEdge
public static boolean IsBoundaryEdge(OctNode node, int dir, int x, int y, int subdivideDepth)
-
PreValidate
public void PreValidate(OctNode node, float isoValue, int maxDepth, int subdivideDepth)
-
PreValidate
public void PreValidate(float isoValue, int maxDepth, int subdivideDepth)
-
Validate
public void Validate(OctNode node, float isoValue, int maxDepth, int fullDepthIso)
-
Validate
public void Validate(OctNode node, float isoValue, int maxDepth, int fullDepthIso, int subdivideDepth)
-
GetRoot
public int GetRoot(RootInfo ri, float isoValue, Point3D position, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> normalHash, int nonLinearFit)
-
GetRoot
public int GetRoot(RootInfo ri, float isoValue, int maxDepth, Point3D position, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> normals, Point3D normal, int nonLinearFit)
-
GetRootIndex
public static int GetRootIndex(OctNode node, int edgeIndex, int maxDepth, int sDepth, RootInfo ri)
-
GetRootIndex
public static boolean GetRootIndex(OctNode node, int edgeIndex, int maxDepth, RootInfo ri)
-
GetRootIndex
public static int GetRootIndex(java.lang.Long key, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, CoredPointIndex index)
-
SetMCRootPositions
public int SetMCRootPositions(OctNode node, int sDepth, float isoValue, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> boundaryNormalHash, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> interiorNormalHash, java.util.Vector<Point3D> interiorPositions, CoredMeshData mesh, int nonLinearFit)
-
SetBoundaryMCRootPositions
public int SetBoundaryMCRootPositions(int sDepth, float isoValue, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,Pair<java.lang.Float,Point3D>> boundaryNormalHash, CoredMeshData mesh, int nonLinearFit)
-
GetMCIsoEdges
public void GetMCIsoEdges(OctNode node, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, int sDepth, java.util.Vector<Pair<java.lang.Long,java.lang.Long>> edges)
-
GetMCIsoTriangles
public int GetMCIsoTriangles(OctNode node, CoredMeshData mesh, java.util.HashMap<java.lang.Long,java.lang.Integer> boundaryRoots, java.util.HashMap<java.lang.Long,java.lang.Integer> interiorRoots, java.util.Vector<Point3D> interiorPositions, int offSet, int sDepth)
-
GetEdgeLoops
public static int GetEdgeLoops(java.util.Vector<Pair<java.lang.Long,java.lang.Long>> edges, java.util.Vector<java.util.Vector<Pair<java.lang.Long,java.lang.Long>>> loops)
-
AddTriangles
public static int AddTriangles(CoredMeshData mesh, java.util.Vector<CoredPointIndex>[] edges, java.util.Vector<Point3D> interiorPositions, int offSet)
-
AddTriangles
public static int AddTriangles(CoredMeshData mesh, java.util.Vector<CoredPointIndex> edges, java.util.Vector<Point3D> interiorPositions, int offSet)
-
-