HE_Mesh  6.0.1
wblut.hemesh.HET_MeshOp Class Reference

Classes

class  HET_IntersectionResult
 

Static Public Member Functions

static HE_Selection splitEdge (final HE_Mesh mesh, final HE_Halfedge edge)
 
static HE_Selection splitEdge (final HE_Mesh mesh, final HE_Halfedge edge, final double f)
 
static void splitEdge (final HE_Mesh mesh, final HE_Halfedge edge, final double x, final double y, final double z)
 
static void splitEdge (final HE_Mesh mesh, final HE_Halfedge edge, final double[] f)
 
static void splitEdge (final HE_Mesh mesh, final HE_Halfedge edge, final float[] f)
 
static HE_Selection splitEdge (final HE_Mesh mesh, final HE_Halfedge edge, final WB_Coord v)
 
static HE_Selection splitEdge (final HE_Mesh mesh, final long key)
 
static HE_Selection splitEdge (final HE_Mesh mesh, final long key, final double f)
 
static void splitEdge (final HE_Mesh mesh, final long key, final double x, final double y, final double z)
 
static void splitEdge (final HE_Mesh mesh, final long key, final double[] f)
 
static void splitEdge (final HE_Mesh mesh, final long key, final float[] f)
 
static HE_Selection splitEdge (final HE_Mesh mesh, final Long key, final WB_Point v)
 
static HE_Selection splitEdges (final HE_Mesh mesh)
 
static HE_Selection splitEdges (final HE_Mesh mesh, final double offset)
 
static HE_Selection splitEdges (final HE_Selection selection)
 
static HE_Selection splitEdges (final HE_Selection selection, final double offset)
 
static void divideEdge (final HE_Mesh mesh, final HE_Halfedge origE, final int n)
 
static void divideEdge (final HE_Mesh mesh, final long key, final int n)
 
static HE_Selection splitFace (final HE_Mesh mesh, final HE_Face face, final HE_Vertex vi, final HE_Vertex vj)
 
static HE_Selection splitFace (final HE_Mesh mesh, final long fkey, final long vkeyi, final long vkeyj)
 
static HE_Selection splitFacesCenter (final HE_Mesh mesh)
 
static HE_Selection splitFacesCenter (final HE_Mesh mesh, final double d)
 
static HE_Selection splitFacesCenter (final HE_Mesh mesh, final double d, final double c)
 
static HE_Selection splitFacesCenter (final HE_Selection faces)
 
static HE_Selection splitFacesCenter (final HE_Selection faces, final double d)
 
static HE_Selection splitFacesCenter (final HE_Selection faces, final double d, final double c)
 
static HE_Selection splitFacesCenterHole (final HE_Mesh mesh)
 
static HE_Selection splitFacesCenterHole (final HE_Mesh mesh, final double d)
 
static HE_Selection splitFacesCenterHole (final HE_Mesh mesh, final double d, final double c)
 
static HE_Selection splitFacesCenterHole (final HE_Selection faces)
 
static HE_Selection splitFacesCenterHole (final HE_Selection faces, final double d)
 
static HE_Selection splitFacesCenterHole (final HE_Selection faces, final double d, final double c)
 
static HE_Selection splitFacesHybrid (final HE_Mesh mesh)
 
static HE_Selection splitFacesHybrid (final HE_Selection sel)
 
static HE_Selection splitFacesMidEdge (final HE_Mesh mesh)
 
static HE_Selection splitFacesMidEdge (final HE_Selection selection)
 
static HE_Selection splitFacesMidEdgeHole (final HE_Mesh mesh)
 
static HE_Selection splitFacesMidEdgeHole (final HE_Selection selection)
 
static HE_Selection splitFacesQuad (final HE_Mesh mesh)
 
static HE_Selection splitFacesQuad (final HE_Mesh mesh, final double d)
 
static HE_Selection splitFacesQuad (final HE_Selection sel)
 
static HE_Selection splitFacesQuad (final HE_Selection sel, final double d)
 
static HE_Selection splitFacesTri (final HE_Mesh mesh)
 
static HE_Selection splitFacesTri (final HE_Mesh mesh, final double d)
 
static HE_Selection splitFacesTri (final HE_Selection selection)
 
static HE_Selection splitFacesTri (final HE_Selection selection, final double d)
 
static HE_Selection triangulate (final HE_Mesh mesh)
 
static HE_Selection triangulate (final HE_Mesh mesh, final HE_Face face)
 
static HE_Selection triangulate (final HE_Selection sel)
 
static HE_Selection triangulate (final HE_Mesh mesh, final long key)
 
static HE_Selection triangulateConcaveFace (final HE_Mesh mesh, final HE_Face face)
 
static HE_Selection triangulateConcaveFace (final HE_Mesh mesh, final long key)
 
static HE_Selection triangulateConcaveFaces (final HE_Mesh mesh)
 
static HE_Selection triangulateConcaveFaces (final HE_Mesh mesh, final List< HE_Face > sel)
 
static HE_Selection triangulateFaceStar (final HE_Mesh mesh, final HE_Vertex v)
 
static HE_Selection triangulateFaceStar (final HE_Mesh mesh, final long vertexkey)
 
static HE_Face createFaceFromHalfedgeLoop (final HE_Mesh mesh, final HE_Halfedge he)
 
static List< HE_FacecreateFaceFromHalfedgeLoop (final HE_Mesh mesh, final List< HE_Halfedge > hes)
 
static HE_RAS< HE_FaceselectAllFacesConnectedToUnpairedHalfedge (final HE_Mesh mesh, final HE_Halfedge unpairedHalfedge)
 
static HE_Mesh flipFaces (final HE_Mesh mesh)
 
static void flipFaces (final HE_Mesh mesh, final HE_RAS< HE_Face > faces)
 
static boolean flipEdge (final HE_Mesh mesh, final HE_Halfedge he)
 
static boolean flipEdgeConditional (final HE_Mesh mesh, final HE_Halfedge he)
 
static boolean flipPlanarEdgeConditional (final HE_Mesh mesh, final HE_Halfedge he, final double cosa)
 
static boolean flipPlanarEdgeConditional (final HE_Mesh mesh, final HE_Halfedge he)
 
static void improveTriangulation (final HE_Mesh mesh, final HE_Selection triangles)
 
static void improveTriangulation (final HE_Mesh mesh)
 
static void improveTriangulation (final HE_Mesh mesh, final double cosa)
 
static void improveTriangulation (final HE_Mesh mesh, final HE_Selection triangles, final double cosa)
 
static HE_Mesh cleanUnusedElementsByFace (final HE_Mesh mesh)
 
static void assignFaceToLoop (final HE_Mesh mesh, final HE_Face face, final HE_Halfedge halfedge)
 
static HE_FaceIntersection getIntersection (final HE_Face face, final WB_Line line)
 
static HE_FaceIntersection getIntersection (final HE_Face face, final WB_Ray ray)
 
static HE_FaceIntersection getIntersection (final HE_Face face, final WB_Segment segment)
 
static double getIntersection (final HE_Halfedge e, final WB_Plane P)
 
static List< HE_FaceIntersectiongetIntersection (final WB_AABBTree tree, final WB_Ray ray)
 
static boolean isInside (final HE_Mesh mesh, final WB_Coord p)
 
static boolean isInside (final WB_AABBTree tree, final WB_Coord p)
 
static List< HE_FaceIntersectiongetIntersection (final WB_AABBTree tree, final WB_Segment segment)
 
static List< HE_FaceIntersectiongetIntersection (final WB_AABBTree tree, final WB_Line line)
 
static List< WB_SegmentgetIntersection (final WB_AABBTree tree, final WB_Plane P)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Plane P)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Triangle T)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_AABB AABB)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Coord p)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Ray R)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Line L)
 
static List< HE_FacegetPotentialIntersectedFaces (final WB_AABBTree tree, final WB_Segment segment)
 
static HE_FaceIntersection getClosestIntersection (final WB_AABBTree tree, final WB_Ray ray)
 
static HE_FaceIntersection getFurthestIntersection (final WB_AABBTree tree, final WB_Ray ray)
 
static HE_FaceIntersection getClosestIntersection (final WB_AABBTree tree, final WB_Line line)
 
static HE_FaceIntersection getFurthestIntersection (final WB_AABBTree tree, final WB_Line line)
 
static HE_FaceIntersection getClosestIntersection (final WB_AABBTree tree, final WB_Segment segment)
 
static HE_FaceIntersection getFurthestIntersection (final WB_AABBTree tree, final WB_Segment segment)
 
static List< HE_FaceIntersectiongetIntersection (final HE_Mesh mesh, final WB_Ray ray)
 
static List< HE_FaceIntersectiongetIntersection (final HE_Mesh mesh, final WB_Segment segment)
 
static List< HE_FaceIntersectiongetIntersection (final HE_Mesh mesh, final WB_Line line)
 
static List< WB_SegmentgetIntersection (final HE_Mesh mesh, final WB_Plane P)
 
static List< HE_FacegetPotentialIntersectedFaces (final HE_Mesh mesh, final WB_Plane P)
 
static List< HE_FacegetPotentialIntersectedFaces (final HE_Mesh mesh, final WB_Ray R)
 
static List< HE_FacegetPotentialIntersectedFaces (final HE_Mesh mesh, final WB_Line L)
 
static List< HE_FacegetPotentialIntersectedFaces (final HE_Mesh mesh, final WB_Segment segment)
 
static HE_FaceIntersection getClosestIntersection (final HE_Mesh mesh, final WB_Ray ray)
 
static HE_FaceIntersection getFurthestIntersection (final HE_Mesh mesh, final WB_Ray ray)
 
static HE_FaceIntersection getClosestIntersection (final HE_Mesh mesh, final WB_Line line)
 
static HE_FaceIntersection getFurthestIntersection (final HE_Mesh mesh, final WB_Line line)
 
static HE_FaceIntersection getClosestIntersection (final HE_Mesh mesh, final WB_Segment segment)
 
static HE_FaceIntersection getFurthestIntersection (final HE_Mesh mesh, final WB_Segment segment)
 
static WB_Classification classifyFaceToPlane3D (final HE_Face f, final WB_Plane P)
 
static WB_Classification classifyEdgeToPlane3D (final HE_Halfedge edge, final WB_Plane P)
 
static WB_Classification classifyVertexToPlane3D (final HE_Vertex v, final WB_Plane P)
 
static WB_Classification getVertexType (final HE_Vertex vertex)
 
static WB_CoordinateSystem3D getVertexCS (final HE_Vertex v)
 
static WB_Coord getVertexNormal (final HE_Vertex v)
 
static WB_Coord getVertexNormalAverage (final HE_Vertex v)
 
static WB_Coord getVertexNormalArea (final HE_Vertex v)
 
static WB_Coord getVertexNormalAngle (final HE_Vertex v)
 
static WB_Coord getVertexNormalGaussCurvature (final HE_Vertex v)
 
static WB_Coord getVertexNormalMeanCurvature (final HE_Vertex v)
 
static WB_Coord getVertexNormalSphereInscribed (final HE_Vertex v)
 
static double getUmbrellaAngle (final HE_Vertex v)
 
static double getAngleDefect (final HE_Vertex v)
 
static double getAngleDefect (final HE_Mesh mesh)
 
static double getScalarGaussCurvature (final HE_Vertex v)
 
static double getScalarMeanCurvature (final HE_Vertex v)
 
static double getVertexArea (final HE_Vertex v)
 
static double getBarycentricDualVertexArea (final HE_Vertex v)
 
static double getCircumcentricDualVertexArea (final HE_Vertex v)
 
static double[] getPrincipalCurvatures (final HE_Vertex v)
 
static double getGaussianCurvature (final HE_Vertex vertex, final WB_Vector meanCurvatureVector)
 
static double getGaussCurvature (final HE_Vertex vertex)
 
static WB_CoordinateSystem3D getCurvatureDirections (final HE_Vertex v)
 
static WB_Coord getFaceNormal (final HE_Face face)
 
static WB_Coord getFaceNormalNotNormalized (final HE_Face face)
 
static double getFaceArea (final HE_Face face)
 
static WB_Classification getFaceType (final HE_Face face)
 
static boolean collapseHalfedge (final HE_Mesh mesh, final HE_Halfedge he)
 
static boolean collapseHalfedgeBoundaryPreserving (final HE_Mesh mesh, final HE_Halfedge he)
 
static boolean collapseEdge (final HE_Mesh mesh, final HE_Halfedge e)
 
static boolean collapseEdgeBoundaryPreserving (final HE_Mesh mesh, final HE_Halfedge e, final boolean strict)
 
static boolean pointIsInFace (final WB_Coord p, final HE_Face f)
 
static boolean pointIsStrictlyInFace (final WB_Coord p, final HE_Face f)
 
static void expandVertexToEdge (final HE_Mesh mesh, final HE_Vertex v, final HE_Face f1, final HE_Face f2, final WB_Coord vn)
 
static double getVolume (final HE_Mesh mesh)
 
static WB_Coord[] getClosestPointToTriangleFace (final WB_Coord p, final HE_Face T)
 
static WB_Coord[] getClosestPointToTriangleMesh (final WB_Coord p, final HE_Mesh mesh)
 
static void liftEdges (final HE_Selection edges, final double d)
 
static double getCotan (final HE_Halfedge he)
 
static DoubleMatrix2D getLaplaceMatrix (final HE_Mesh mesh)
 
static DoubleMatrix2D getMassMatrix (final HE_Mesh mesh)
 
static double[] getMassArray (final HE_Mesh mesh)
 
static DoubleMatrix2D getHodgeStar0Form (final HE_Mesh mesh)
 
static DoubleMatrix2D getHodgeStar1Form (final HE_Mesh mesh)
 
static DoubleMatrix2D getHodgeStar2Form (final HE_Mesh mesh)
 
static DoubleMatrix2D getExteriorDerivative0Form (final HE_Mesh mesh)
 
static DoubleMatrix2D getExteriorDerivative1Form (final HE_Mesh mesh)
 
static List< HET_IntersectionResultgetIntersection (final HE_Mesh mesh1, final HE_Mesh mesh2)
 

Static Public Attributes

static final WB_ProgressTracker tracker = WB_ProgressTracker.instance()
 

Private Member Functions

 HET_MeshOp ()
 

Static Private Member Functions

static WB_Vector findOptimalSolution (final HE_Vertex v, final WB_Vector normal, final WB_Vector t1, final WB_Vector t2)
 
static double signedVolume (final HE_Face f, final WB_Coord center)
 

Static Private Attributes

static WB_GeometryFactory gf = new WB_GeometryFactory()
 

Constructor & Destructor Documentation

wblut.hemesh.HET_MeshOp.HET_MeshOp ( )
private

Member Function Documentation

static void wblut.hemesh.HET_MeshOp.assignFaceToLoop ( final HE_Mesh  mesh,
final HE_Face  face,
final HE_Halfedge  halfedge 
)
static

Assign face to halfedge loop.

Parameters
mesh
faceface
halfedgehalfedge loop

References wblut.hemesh.HE_Halfedge.getNextInFace(), and wblut.hemesh.HE_Mesh.setFace().

static WB_Classification wblut.hemesh.HET_MeshOp.classifyVertexToPlane3D ( final HE_Vertex  v,
final WB_Plane  P 
)
static
static HE_Face wblut.hemesh.HET_MeshOp.createFaceFromHalfedgeLoop ( final HE_Mesh  mesh,
final HE_Halfedge  he 
)
static
static List<HE_Face> wblut.hemesh.HET_MeshOp.createFaceFromHalfedgeLoop ( final HE_Mesh  mesh,
final List< HE_Halfedge hes 
)
static
static void wblut.hemesh.HET_MeshOp.divideEdge ( final HE_Mesh  mesh,
final HE_Halfedge  origE,
final int  n 
)
static

Divide edge.

Parameters
mesh
origEedge to divide
nnumber of parts

References wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.divideEdge ( final HE_Mesh  mesh,
final long  key,
final int  n 
)
static
static void wblut.hemesh.HET_MeshOp.expandVertexToEdge ( final HE_Mesh  mesh,
final HE_Vertex  v,
final HE_Face  f1,
final HE_Face  f2,
final WB_Coord  vn 
)
static
static HE_Mesh wblut.hemesh.HET_MeshOp.flipFaces ( final HE_Mesh  mesh)
static

Reverse all faces. Flips normals.

Parameters
mesh
Returns

References wblut.hemesh.HE_Mesh.modify().

static boolean wblut.hemesh.HET_MeshOp.flipPlanarEdgeConditional ( final HE_Mesh  mesh,
final HE_Halfedge  he 
)
static
static double wblut.hemesh.HET_MeshOp.getAngleDefect ( final HE_Vertex  v)
static

Computes the angle defect at a vertex (= 2PI minus the sum of incident angles at an interior vertex or PI minus the sum of incident angles at a boundary vertex).

Returns

References wblut.hemesh.HE_Halfedge.getAngle(), wblut.hemesh.HE_Halfedge.getFace(), wblut.hemesh.HE_Vertex.getHalfedge(), wblut.hemesh.HE_Halfedge.getNextInVertex(), and wblut.hemesh.HE_Vertex.isBoundary().

static double wblut.hemesh.HET_MeshOp.getAngleDefect ( final HE_Mesh  mesh)
static
static double wblut.hemesh.HET_MeshOp.getBarycentricDualVertexArea ( final HE_Vertex  v)
static
static double wblut.hemesh.HET_MeshOp.getCircumcentricDualVertexArea ( final HE_Vertex  v)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getClosestIntersection ( final WB_AABBTree  tree,
final WB_Line  line 
)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getClosestIntersection ( final WB_AABBTree  tree,
final WB_Segment  segment 
)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getClosestIntersection ( final HE_Mesh  mesh,
final WB_Ray  ray 
)
static
Parameters
mesh
ray
Returns

References wblut.hemesh.HET_MeshOp.getClosestIntersection().

static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getClosestIntersection ( final HE_Mesh  mesh,
final WB_Line  line 
)
static
Parameters
mesh
line
Returns

References wblut.hemesh.HET_MeshOp.getClosestIntersection().

static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getClosestIntersection ( final HE_Mesh  mesh,
final WB_Segment  segment 
)
static
Parameters
mesh
segment
Returns

References wblut.hemesh.HET_MeshOp.getClosestIntersection().

static WB_Coord [] wblut.hemesh.HET_MeshOp.getClosestPointToTriangleFace ( final WB_Coord  p,
final HE_Face  T 
)
static
static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getExteriorDerivative0Form ( final HE_Mesh  mesh)
static
static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getExteriorDerivative1Form ( final HE_Mesh  mesh)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final WB_AABBTree  tree,
final WB_Ray  ray 
)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final WB_AABBTree  tree,
final WB_Line  line 
)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final WB_AABBTree  tree,
final WB_Segment  segment 
)
static
static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final HE_Mesh  mesh,
final WB_Ray  ray 
)
static
Parameters
mesh
ray
Returns

References wblut.hemesh.HET_MeshOp.getFurthestIntersection().

static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final HE_Mesh  mesh,
final WB_Line  line 
)
static
Parameters
mesh
line
Returns

References wblut.hemesh.HET_MeshOp.getFurthestIntersection().

static HE_FaceIntersection wblut.hemesh.HET_MeshOp.getFurthestIntersection ( final HE_Mesh  mesh,
final WB_Segment  segment 
)
static
Parameters
mesh
segment
Returns

References wblut.hemesh.HET_MeshOp.getFurthestIntersection().

static double wblut.hemesh.HET_MeshOp.getGaussCurvature ( final HE_Vertex  vertex)
static
static double wblut.hemesh.HET_MeshOp.getGaussianCurvature ( final HE_Vertex  vertex,
final WB_Vector  meanCurvatureVector 
)
static

Returns the discrete Gaussian curvature and the mean normal. These discrete operators are described in "Discrete Differential-Geometry Operators for Triangulated 2-Manifolds", Mark Meyer, Mathieu Desbrun, Peter Schr???der, and Alan H. Barr. http://www.cs.caltech.edu/~mmeyer/Publications/diffGeomOps.pdf http://www.cs.caltech.edu/~mmeyer/Publications/diffGeomOps.pdf Note: on a sphere, the Gaussian curvature is very accurate, but not the mean curvature. Guoliang Xu suggests improvements in his papers http://lsec.cc.ac.cn/~xuguo/xuguo3.htm

Parameters
vertex
meanCurvatureVector
Returns

References wblut.geom.WB_Vector.addMulSelf(), wblut.geom.WB_Vector.cross(), wblut.geom.WB_Vector.dot(), wblut.math.WB_Epsilon.EPSILON, wblut.hemesh.HE_Halfedge.getEndVertex(), wblut.hemesh.HE_Halfedge.getFace(), wblut.hemesh.HE_Vertex.getHalfedge(), wblut.geom.WB_Vector.getLength(), wblut.hemesh.HE_Halfedge.getNextInVertex(), wblut.hemesh.HE_Halfedge.getPrevInFace(), wblut.hemesh.HE_Halfedge.getVertex(), wblut.geom.WB_Vector.mulAddMul(), wblut.geom.WB_Vector.mulSelf(), and wblut.geom.WB_MutableCoordinate.set().

static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getHodgeStar0Form ( final HE_Mesh  mesh)
static

Builds a sparse diagonal matrix encoding the Hodge operator on 0-forms. By convention, the area of a vertex is 1.

Parameters
mesh
Returns

References wblut.hemesh.HET_MeshOp.getBarycentricDualVertexArea(), wblut.hemesh.HE_Mesh.getIndex(), wblut.hemesh.HE_Mesh.getNumberOfVertices(), and wblut.hemesh.HE_Mesh.vItr().

static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getHodgeStar1Form ( final HE_Mesh  mesh)
static

Builds a sparse diagonal matrix encoding the Hodge operator on 1-forms.

Parameters
mesh
Returns

References wblut.hemesh.HE_Mesh.eItr(), wblut.hemesh.HET_MeshOp.getCotan(), wblut.hemesh.HE_Mesh.getIndex(), wblut.hemesh.HE_Mesh.getNumberOfEdges(), and wblut.hemesh.HE_Halfedge.getPair().

static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getHodgeStar2Form ( final HE_Mesh  mesh)
static

Builds a sparse diagonal matrix encoding the Hodge operator on 2-forms. By convention, the area of a vertex is 1.

Parameters
mesh
Returns

References wblut.hemesh.HE_Mesh.fItr(), wblut.hemesh.HET_MeshOp.getFaceArea(), wblut.hemesh.HE_Mesh.getIndex(), and wblut.hemesh.HE_Mesh.getNumberOfFaces().

static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final WB_AABBTree  tree,
final WB_Ray  ray 
)
static
static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final WB_AABBTree  tree,
final WB_Segment  segment 
)
static
static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final WB_AABBTree  tree,
final WB_Line  line 
)
static
static List<WB_Segment> wblut.hemesh.HET_MeshOp.getIntersection ( final WB_AABBTree  tree,
final WB_Plane  P 
)
static
Parameters
tree
P
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final HE_Mesh  mesh,
final WB_Ray  ray 
)
static
Parameters
mesh
ray
Returns

References wblut.hemesh.HET_MeshOp.getIntersection().

static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final HE_Mesh  mesh,
final WB_Segment  segment 
)
static
Parameters
mesh
segment
Returns

References wblut.hemesh.HET_MeshOp.getIntersection().

static List<HE_FaceIntersection> wblut.hemesh.HET_MeshOp.getIntersection ( final HE_Mesh  mesh,
final WB_Line  line 
)
static
Parameters
mesh
line
Returns

References wblut.hemesh.HET_MeshOp.getIntersection().

static List<WB_Segment> wblut.hemesh.HET_MeshOp.getIntersection ( final HE_Mesh  mesh,
final WB_Plane  P 
)
static
Parameters
mesh
P
Returns

References wblut.hemesh.HET_MeshOp.getIntersection().

static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getLaplaceMatrix ( final HE_Mesh  mesh)
static

Builds a sparse laplace matrix. The laplace operator is negative semidefinite; instead we build a positive definite matrix by multiplying the entries of the laplace matrix by -1 and shifting the diagonal elements by a small constant (e.g. 1e-8).

Parameters
mesh
Returns

References wblut.hemesh.HET_MeshOp.getCotan(), wblut.hemesh.HE_Halfedge.getEndVertex(), wblut.hemesh.HE_Vertex.getHalfedge(), wblut.hemesh.HE_Mesh.getIndex(), wblut.hemesh.HE_Halfedge.getNextInVertex(), wblut.hemesh.HE_Mesh.getNumberOfVertices(), wblut.hemesh.HE_Halfedge.getPair(), and wblut.hemesh.HE_Mesh.vItr().

static DoubleMatrix2D wblut.hemesh.HET_MeshOp.getMassMatrix ( final HE_Mesh  mesh)
static

Builds a sparse diagonal mass matrix containing the barycentric dual area of each vertex of a mesh. unique index.

Parameters
mesh
Returns

References wblut.hemesh.HET_MeshOp.getBarycentricDualVertexArea(), wblut.hemesh.HE_Mesh.getIndex(), wblut.hemesh.HE_Mesh.getNumberOfVertices(), and wblut.hemesh.HE_Mesh.vItr().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Plane  P 
)
static
Parameters
tree
P
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Triangle  T 
)
static
Parameters
tree
T
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_AABB  AABB 
)
static
static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Coord  p 
)
static
static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Ray  R 
)
static
Parameters
tree
R
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Line  L 
)
static
Parameters
tree
L
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final WB_AABBTree  tree,
final WB_Segment  segment 
)
static
Parameters
tree
segment
Returns

References wblut.geom.WB_GeometryOp3D.getIntersection3D().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final HE_Mesh  mesh,
final WB_Plane  P 
)
static
Parameters
mesh
P
Returns

References wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final HE_Mesh  mesh,
final WB_Ray  R 
)
static
Parameters
mesh
R
Returns

References wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final HE_Mesh  mesh,
final WB_Line  L 
)
static
Parameters
mesh
L
Returns

References wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces().

static List<HE_Face> wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces ( final HE_Mesh  mesh,
final WB_Segment  segment 
)
static
Parameters
mesh
segment
Returns

References wblut.hemesh.HET_MeshOp.getPotentialIntersectedFaces().

static double [] wblut.hemesh.HET_MeshOp.getPrincipalCurvatures ( final HE_Vertex  v)
static

Computes the (pointwise) minimum and maximum principal curvature values at a vertex.

Parameters
v
Returns

References wblut.hemesh.HET_MeshOp.getAngleDefect(), wblut.hemesh.HET_MeshOp.getCircumcentricDualVertexArea(), and wblut.hemesh.HET_MeshOp.getScalarMeanCurvature().

static double wblut.hemesh.HET_MeshOp.getScalarGaussCurvature ( final HE_Vertex  v)
static

Computes the (integrated) scalar gauss curvature at a vertex.

Parameters
v
Returns

References wblut.hemesh.HET_MeshOp.getAngleDefect().

static double wblut.hemesh.HET_MeshOp.getScalarMeanCurvature ( final HE_Vertex  v)
static
static double wblut.hemesh.HET_MeshOp.getUmbrellaAngle ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormal ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormalAngle ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormalArea ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormalAverage ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormalMeanCurvature ( final HE_Vertex  v)
static
static WB_Coord wblut.hemesh.HET_MeshOp.getVertexNormalSphereInscribed ( final HE_Vertex  v)
static
static void wblut.hemesh.HET_MeshOp.improveTriangulation ( final HE_Mesh  mesh,
final HE_Selection  triangles 
)
static
static void wblut.hemesh.HET_MeshOp.improveTriangulation ( final HE_Mesh  mesh)
static
static void wblut.hemesh.HET_MeshOp.improveTriangulation ( final HE_Mesh  mesh,
final double  cosa 
)
static
static boolean wblut.hemesh.HET_MeshOp.isInside ( final HE_Mesh  mesh,
final WB_Coord  p 
)
static
static boolean wblut.hemesh.HET_MeshOp.isInside ( final WB_AABBTree  tree,
final WB_Coord  p 
)
static
static boolean wblut.hemesh.HET_MeshOp.pointIsInFace ( final WB_Coord  p,
final HE_Face  f 
)
static

Check if point lies inside or on edge of face.

Parameters
ppoint
fthe f
Returns
true/false

References wblut.geom.WB_GeometryOp3D.getDistanceToClosestPoint3D(), wblut.math.WB_Epsilon.isZero(), and wblut.hemesh.HE_Face.toPolygon().

static boolean wblut.hemesh.HET_MeshOp.pointIsStrictlyInFace ( final WB_Coord  p,
final HE_Face  f 
)
static
static double wblut.hemesh.HET_MeshOp.signedVolume ( final HE_Face  f,
final WB_Coord  center 
)
staticprivate
static HE_Selection wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final HE_Halfedge  edge 
)
static

Split edge in half.

Parameters
mesh
edgeedge to split.
Returns
selection of new vertex and new edge

References wblut.geom.WB_GeometryFactory3D.createMidpoint(), wblut.hemesh.HE_Halfedge.getEndVertex(), and wblut.hemesh.HE_Halfedge.getVertex().

static HE_Selection wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final HE_Halfedge  edge,
final double  f 
)
static

Split edge in two parts.

Parameters
mesh
edgeedge to split
ffraction of first part (0..1)
Returns
selection of new vertex and new edge

References wblut.geom.WB_GeometryFactory3D.createInterpolatedPoint(), wblut.hemesh.HE_Halfedge.getEndVertex(), wblut.hemesh.HE_Halfedge.getVertex(), wblut.hemesh.HE_Halfedge.isEdge(), and wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final HE_Halfedge  edge,
final double  x,
final double  y,
final double  z 
)
static

Insert vertex in edge.

Parameters
mesh
edgeedge to split
xx-coordinate of new vertex
yy-coordinate of new vertex
zz-coordinate of new vertex

References wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final HE_Halfedge  edge,
final double[]  f 
)
static
static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final HE_Halfedge  edge,
final float[]  f 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final long  key 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final long  key,
final double  f 
)
static

Split edge in two parts.

Parameters
mesh
keykey of edge to split
ffraction of first part (0..1)
Returns
selection of new vertex and new edge

References wblut.hemesh.HE_Mesh.getHalfedgeWithKey(), and wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final long  key,
final double  x,
final double  y,
final double  z 
)
static

Insert vertex in edge.

Parameters
mesh
keykey of edge to split
xx-coordinate of new vertex
yy-coordinate of new vertex
zz-coordinate of new vertex

References wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final long  key,
final double[]  f 
)
static

Split edge in multiple parts.

Parameters
mesh
keykey of edge to split
farray of fractions (0..1)

References wblut.hemesh.HE_Mesh.getHalfedgeWithKey(), and wblut.hemesh.HET_MeshOp.splitEdge().

static void wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final long  key,
final float[]  f 
)
static

Split edge in multiple parts.

Parameters
mesh
keykey of edge to split
farray of fractions (0..1)

References wblut.hemesh.HE_Mesh.getHalfedgeWithKey(), and wblut.hemesh.HET_MeshOp.splitEdge().

static HE_Selection wblut.hemesh.HET_MeshOp.splitEdge ( final HE_Mesh  mesh,
final Long  key,
final WB_Point  v 
)
static

Insert vertex in edge.

Parameters
mesh
keykey of edge to split
vposition of new vertex
Returns
selection of new vertex and new edge

References wblut.hemesh.HE_Mesh.getHalfedgeWithKey(), and wblut.hemesh.HET_MeshOp.splitEdge().

static HE_Selection wblut.hemesh.HET_MeshOp.splitEdges ( final HE_Mesh  mesh)
static

Split all edges in half.

Parameters
mesh
Returns
selection of new vertices and new edges

References wblut.hemesh.HE_Selection.add(), wblut.hemesh.HE_Mesh.getEdgesAsArray(), and wblut.hemesh.HET_MeshOp.splitEdge().

static HE_Selection wblut.hemesh.HET_MeshOp.splitEdges ( final HE_Mesh  mesh,
final double  offset 
)
static

Split all edges in half, offset the center by a given distance along the edge normal.

Parameters
mesh
offsetthe offset
Returns
selection of new vertices and new edges

References wblut.hemesh.HE_Selection.add(), wblut.geom.WB_Point.addSelf(), wblut.hemesh.HE_Mesh.getEdgesAsArray(), wblut.hemesh.HE_Mesh.getNumberOfEdges(), wblut.geom.WB_Point.mulSelf(), and wblut.hemesh.HET_MeshOp.splitEdge().

static HE_Selection wblut.hemesh.HET_MeshOp.splitEdges ( final HE_Selection  selection)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitEdges ( final HE_Selection  selection,
final double  offset 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFace ( final HE_Mesh  mesh,
final long  fkey,
final long  vkeyi,
final long  vkeyj 
)
static

Divide face along two vertices.

Parameters
mesh
fkeykey of face
vkeyikey of first vertex
vkeyjkey of second vertex
Returns
new face and edge

References wblut.hemesh.HE_Mesh.getFaceWithKey(), wblut.hemesh.HE_Mesh.getVertexWithKey(), and wblut.hemesh.HET_MeshOp.splitFace().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Mesh  mesh)
static
Parameters
mesh
Returns

References wblut.hemesh.HE_Mesh.getSelection(), and wblut.hemesh.HE_Mesh.modify().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Mesh  mesh,
final double  d 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Mesh  mesh,
final double  d,
final double  c 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Selection  faces)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Selection  faces,
final double  d 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenter ( final HE_Selection  faces,
final double  d,
final double  c 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Mesh  mesh)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Mesh  mesh,
final double  d 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Mesh  mesh,
final double  d,
final double  c 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Selection  faces)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Selection  faces,
final double  d 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesCenterHole ( final HE_Selection  faces,
final double  d,
final double  c 
)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesHybrid ( final HE_Mesh  mesh)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesHybrid ( final HE_Selection  sel)
static
static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesQuad ( final HE_Mesh  mesh)
static

Quad split faces.

Parameters
mesh
Returns
selection of new faces and new vertices

References wblut.hemesh.HES_QuadSplit.getSplitFaces(), and wblut.hemesh.HE_Mesh.subdivide().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesQuad ( final HE_Mesh  mesh,
final double  d 
)
static

Quad split faces.

Parameters
mesh
d
Returns
selection of new faces and new vertices

References wblut.hemesh.HES_QuadSplit.getSplitFaces(), wblut.hemesh.HES_QuadSplit.setOffset(), and wblut.hemesh.HE_Mesh.subdivide().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesQuad ( final HE_Selection  sel)
static

Quad split selected faces.

Parameters
selselection to split
Returns
selection of new faces and new vertices

References wblut.hemesh.HES_QuadSplit.getSplitFaces(), and wblut.hemesh.HE_Selection.subdivide().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesQuad ( final HE_Selection  sel,
final double  d 
)
static

Quad split selected faces.

Parameters
selselection to split
d
Returns
selection of new faces and new vertices

References wblut.hemesh.HES_QuadSplit.getSplitFaces(), wblut.hemesh.HES_QuadSplit.setOffset(), and wblut.hemesh.HE_Selection.subdivide().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesTri ( final HE_Mesh  mesh)
static

Tri split faces.

Parameters
mesh
Returns
selection of new faces and new vertex

References wblut.hemesh.HEM_TriSplit.getSplitFaces(), and wblut.hemesh.HE_Mesh.modify().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesTri ( final HE_Mesh  mesh,
final double  d 
)
static

Tri split faces with offset along face normal.

Parameters
mesh
doffset along face normal
Returns
selection of new faces and new vertex

References wblut.hemesh.HEM_TriSplit.getSplitFaces(), wblut.hemesh.HE_Mesh.modify(), and wblut.hemesh.HEM_TriSplit.setOffset().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesTri ( final HE_Selection  selection)
static

Tri split faces.

Parameters
selectionface selection to split
Returns
selection of new faces and new vertex

References wblut.hemesh.HEM_TriSplit.getSplitFaces(), and wblut.hemesh.HE_Selection.modify().

static HE_Selection wblut.hemesh.HET_MeshOp.splitFacesTri ( final HE_Selection  selection,
final double  d 
)
static

Tri split faces with offset along face normal.

Parameters
selectionface selection to split
doffset along face normal
Returns
selection of new faces and new vertex

References wblut.hemesh.HEM_TriSplit.getSplitFaces(), wblut.hemesh.HE_Selection.modify(), and wblut.hemesh.HEM_TriSplit.setOffset().

static HE_Selection wblut.hemesh.HET_MeshOp.triangulate ( final HE_Mesh  mesh)
static

Triangulate all faces.

Parameters
mesh
Returns

References wblut.hemesh.HE_Mesh.modify(), and wblut.hemesh.HEM_TriangulateMT.triangles.

static HE_Selection wblut.hemesh.HET_MeshOp.triangulate ( final HE_Mesh  mesh,
final HE_Face  face 
)
static
Parameters
mesh
face
Returns

References wblut.hemesh.HE_Selection.add(), and wblut.hemesh.HET_MeshOp.triangulate().

static HE_Selection wblut.hemesh.HET_MeshOp.triangulate ( final HE_Selection  sel)
static

Triangulate.

Parameters
selselection
Returns

References wblut.hemesh.HE_Selection.modify(), and wblut.hemesh.HEM_TriangulateMT.triangles.

static HE_Selection wblut.hemesh.HET_MeshOp.triangulate ( final HE_Mesh  mesh,
final long  key 
)
static

Triangulate face.

Parameters
mesh
keykey of face
Returns

References wblut.hemesh.HE_Mesh.getFaceWithKey(), and wblut.hemesh.HET_MeshOp.triangulate().

static HE_Selection wblut.hemesh.HET_MeshOp.triangulateConcaveFace ( final HE_Mesh  mesh,
final HE_Face  face 
)
static

Triangulate face if concave.

Parameters
mesh
facekey of face
Returns

References wblut.hemesh.HE_Selection.add(), wblut.geom.WB_Classification.CONCAVE, wblut.hemesh.HE_Face.getFaceType(), and wblut.hemesh.HET_MeshOp.triangulate().

static HE_Selection wblut.hemesh.HET_MeshOp.triangulateConcaveFace ( final HE_Mesh  mesh,
final long  key 
)
static

Triangulate face if concave.

Parameters
mesh
keykey of face
Returns

References wblut.hemesh.HE_Mesh.getFaceWithKey(), and wblut.hemesh.HET_MeshOp.triangulateConcaveFace().

static HE_Selection wblut.hemesh.HET_MeshOp.triangulateConcaveFaces ( final HE_Mesh  mesh)
static
static HE_Selection wblut.hemesh.HET_MeshOp.triangulateConcaveFaces ( final HE_Mesh  mesh,
final List< HE_Face sel 
)
static

Member Data Documentation

WB_GeometryFactory wblut.hemesh.HET_MeshOp.gf = new WB_GeometryFactory()
staticprivate
final WB_ProgressTracker wblut.hemesh.HET_MeshOp.tracker = WB_ProgressTracker.instance()
static

The documentation for this class was generated from the following file: