Package com.solibri.geometry.mesh
Interface TriangleMesh
- All Superinterfaces:
Iterable<Triangle3d>
public interface TriangleMesh extends Iterable<Triangle3d>
Represents a mesh made of triangles.
TriangleMesh is also an Iterable of triangles. Since this is an
iterable, using iterating over it from multi threads at the same time is not safe, since the iterations conflict with
each other. For multi-threaded access, be sure to call toTriangleCollection() or toPointCollection() and
use those collections.- Since:
- 9.10.2
-
Method Summary
Modifier and Type Method Description static TriangleMeshcreateEmpty()Returns a new instance of an emptyTriangleMesh.TriangleMeshdifference(TriangleMesh other)Returns the difference of this triangle mesh and the given triangle mesh.booleanencloses(Vector3d point)Returns true if theTriangleMeshis closed and the given point is inside thisTriangleMesh.TriangleMeshfilter(Predicate<Triangle3d> filter)Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshthat satisfy the givenPredicate.TriangleMeshflipped()Returns a version of thisTriangleMeshwhere all the triangles have flipped normals, with the effect of exchanging the external faces with the internal faces if the mesh is closed.static TriangleMeshfromPolygons(Collection<? extends Polygon3d> polygons)Returns a new instance of aTriangleMeshgiven the polygons that form it.static TriangleMeshfromTriangles(Collection<? extends Triangle3d> triangles)Returns a new instance of aTriangleMeshgiven the triangles it contains.doublegetArea()Returns the total area of the triangles in thisTriangleMesh.Optional<AABB3d>getBoundingBox()Returns the axis aligned bounding box of theTriangleMesh.Iterable<Vector3d>getPoints()Returns an iterable of all the vertices of all the triangles in theTriangleMesh.doublegetVolume()Returns the total volume enclosed by thisTriangleMesh.TriangleMeshintersection(TriangleMesh other)Returns the intersection of this triangle mesh and the given triangle mesh.booleanintersects(TriangleMesh other)Returns true if thisTriangleMeshintersects the givenTriangleMesh.booleanisInsideOut()Returns true if the closedTriangleMeshis inside-out, meaning that the normals of the surface triangles point inwards instead of outwards.TriangleMeshmergedWith(TriangleMesh other)Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshand anotherTriangleMesh.Optional<Segment2d>shortest2dPathInXYPlaneProjectionTo(Vector3d point)Returns the shortest 2D path from the projection of thisTriangleMeshto the projection of a point in the XY-plane, if such path exists.Optional<Segment2d>shortest2dPathInXYPlaneProjectionTo(TriangleMesh other)Returns the shortest 2D path from the projection of thisTriangleMeshto the projection of anotherTriangleMeshin the XY-plane, if such path exists.Optional<Segment3d>shortestHorizontalPathTo(Vector3d point)Returns the shortest horizontal path from thisTriangleMeshto a point, if such path exists.Optional<Segment3d>shortestHorizontalPathTo(TriangleMesh other)Returns the shortest horizontal path from thisTriangleMeshto another, if such path exists.Optional<Segment3d>shortestPathTo(Vector3d point)Returns the shortest path from thisTriangleMeshto a given point, if such path exists.Optional<Segment3d>shortestPathTo(TriangleMesh other)Returns the shortest path from thisTriangleMeshto another, if such path exists.Optional<Segment3d>shortestVerticalPathTo(Vector3d point)Returns the shortest vertical path from thisTriangleMeshto a point, if such path exists.Optional<Segment3d>shortestVerticalPathTo(TriangleMesh other)Returns the shortest vertical path from thisTriangleMeshto another, if such path exists.Collection<Vector3d>toPointCollection()Returns a new collection containing all the vertices of all the triangles in thisTriangleMesh.Collection<Triangle3d>toTriangleCollection()Returns a new collection containing the triangles in thisTriangleMesh.TriangleMeshtransform(Matrix4d transformation)Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshtransformed by the given transformation matrix.TriangleMeshtransform(Function<Triangle3d,Triangle3d> mapping)Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshtransformed according to the given mapping function.TriangleMeshunion(TriangleMesh other)Returns the union of this triangle mesh and the given triangle mesh.TriangleMeshwithPolygon(Polygon3d polygon)Returns a newTriangleMeshcomposed of thisTriangleMeshand an additional polygon.TriangleMeshwithPolygons(Collection<? extends Polygon3d> polygons)Returns a newTriangleMeshcomposed of thisTriangleMeshand additional polygons.TriangleMeshwithTriangle(Triangle3d triangle)Returns a newTriangleMeshcomposed of thisTriangleMeshand an additional triangle.TriangleMeshwithTriangles(Collection<? extends Triangle3d> triangles)Returns a newTriangleMeshcomposed of thisTriangleMeshand additional triangles.Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Method Details
-
createEmpty
Returns a new instance of an emptyTriangleMesh.- Returns:
- the empty
TriangleMesh - Since:
- 9.10.2
-
fromTriangles
Returns a new instance of aTriangleMeshgiven the triangles it contains.- Parameters:
triangles- the triangles of the new mesh- Returns:
- the
TriangleMesh - Since:
- 9.10.2
-
fromPolygons
Returns a new instance of aTriangleMeshgiven the polygons that form it. The polygons will be triangulated.- Parameters:
polygons- the polygons forming the mesh that will be triangulated- Returns:
- the
TriangleMesh - Since:
- 9.10.2
-
toTriangleCollection
Collection<Triangle3d> toTriangleCollection()Returns a new collection containing the triangles in thisTriangleMesh. If an iterable to the mesh's triangles is enough, use directlyTriangleMeshas anIterable.- Returns:
- a new collection containing the triangles in this
TriangleMesh - Since:
- 9.10.2
-
toPointCollection
Collection<Vector3d> toPointCollection()Returns a new collection containing all the vertices of all the triangles in thisTriangleMesh. If an iterable to the mesh's points is enough, use the fastergetPoints().- Returns:
- a new collection containing all the vertices of all the triangles in this
TriangleMesh. - Since:
- 9.10.2
-
withTriangle
Returns a newTriangleMeshcomposed of thisTriangleMeshand an additional triangle.- Parameters:
triangle- the triangle to add to theTriangleMesh- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
withPolygon
Returns a newTriangleMeshcomposed of thisTriangleMeshand an additional polygon.- Parameters:
polygon- the polygon to add to theTriangleMesh- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
withTriangles
Returns a newTriangleMeshcomposed of thisTriangleMeshand additional triangles.- Parameters:
triangles- the triangles to add to theTriangleMesh- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
withPolygons
Returns a newTriangleMeshcomposed of thisTriangleMeshand additional polygons.- Parameters:
polygons- the polygons to add to theTriangleMesh- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
mergedWith
Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshand anotherTriangleMesh.- Parameters:
other- the triangles to add to theTriangleMesh- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
filter
Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshthat satisfy the givenPredicate.- Parameters:
filter- the givenPredicate- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
transform
Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshtransformed according to the given mapping function.- Parameters:
mapping- the given mapping function, describing how aTriangle3dis transformed- Returns:
- the new
TriangleMesh - Since:
- 9.10.2
-
transform
Returns a newTriangleMeshcomposed of all the triangles of thisTriangleMeshtransformed by the given transformation matrix.- Parameters:
transformation- the given transformation matrix, describing how thisTriangleMeshis transformed- Returns:
- the new
TriangleMesh - Since:
- 9.12.1
-
getBoundingBox
Returns the axis aligned bounding box of theTriangleMesh.- Returns:
- the bounding box if it exists
- Since:
- 9.10.2
-
getPoints
Returns an iterable of all the vertices of all the triangles in theTriangleMesh.- Returns:
- an iterable of all the vertices in this
TriangleMesh - Since:
- 9.10.2
-
intersects
Returns true if thisTriangleMeshintersects the givenTriangleMesh.- Parameters:
other- the otherTriangleMesh- Returns:
- true if this
TriangleMeshand the givenTriangleMeshintersects, false otherwise - Since:
- 9.10.2
-
intersection
Returns the intersection of this triangle mesh and the given triangle mesh.- Parameters:
other- the other mesh- Returns:
- the intersection
- Since:
- 9.12.3
-
union
Returns the union of this triangle mesh and the given triangle mesh.- Parameters:
other- the other mesh- Returns:
- the union
- Since:
- 9.12.3
-
difference
Returns the difference of this triangle mesh and the given triangle mesh.- Parameters:
other- the other mesh- Returns:
- the difference
- Since:
- 9.12.3
-
encloses
Returns true if theTriangleMeshis closed and the given point is inside thisTriangleMesh.- Parameters:
point- the given point- Returns:
- true if the point is inside the
TriangleMesh - Since:
- 9.10.2
-
isInsideOut
boolean isInsideOut()Returns true if the closedTriangleMeshis inside-out, meaning that the normals of the surface triangles point inwards instead of outwards. An inside-out mesh is produced when its triangles are oriented clockwise when looking from the outside, instead of being oriented counter-clockwise. When a clockwise mesh is joined to a counter-clockwise mesh, their volume is subtracted instead of added, and some of the mesh algorithms may return unintuitive or incorrect results. The result of this method is meaningful only for closed meshes that have self-consistent triangle orientation.- Returns:
- true if the
TriangleMeshsurface is oriented inside-out - Since:
- 9.10.2
-
flipped
TriangleMesh flipped()Returns a version of thisTriangleMeshwhere all the triangles have flipped normals, with the effect of exchanging the external faces with the internal faces if the mesh is closed. This method can be used to retrieve a corrected version of an inside-out mesh resulting from a transformation that did not preserve the orientation of the triangles in the mesh.- Returns:
- the flipped version of this
TriangleMesh - Since:
- 9.10.2
-
getArea
double getArea()Returns the total area of the triangles in thisTriangleMesh.- Returns:
- the total area of the triangles in this
TriangleMesh - Since:
- 9.10.2
-
getVolume
double getVolume()Returns the total volume enclosed by thisTriangleMesh. This method will produce a meaningful result only if theTriangleMeshis closed and does not contain intersecting solids.- Returns:
- the total volume enclosed by this
TriangleMesh - Since:
- 9.10.2
-
shortestPathTo
Returns the shortest path from thisTriangleMeshto a given point, if such path exists.- Parameters:
point- the point asVector3d- Returns:
- the shortest path connecting this
TriangleMeshto the given point, if it exists - Since:
- 9.10.2
-
shortestPathTo
Returns the shortest path from thisTriangleMeshto another, if such path exists.- Parameters:
other- the otherTriangleMesh- Returns:
- the shortest path connecting this
TriangleMeshto the other, if it exists - Since:
- 9.10.2
-
shortestVerticalPathTo
Returns the shortest vertical path from thisTriangleMeshto a point, if such path exists.- Parameters:
point- the point asVector3d- Returns:
- the shortest vertical path connecting this
TriangleMeshto the point, if it exists - Since:
- 9.10.2
-
shortestVerticalPathTo
Returns the shortest vertical path from thisTriangleMeshto another, if such path exists.- Parameters:
other- the otherTriangleMesh- Returns:
- the shortest vertical path connecting this
TriangleMeshto the other, if it exists - Since:
- 9.10.2
-
shortestHorizontalPathTo
Returns the shortest horizontal path from thisTriangleMeshto a point, if such path exists.- Parameters:
point- the point asVector3d- Returns:
- the shortest horizontal path connecting this
TriangleMeshto the point, if it exists - Since:
- 9.10.2
-
shortestHorizontalPathTo
Returns the shortest horizontal path from thisTriangleMeshto another, if such path exists.- Parameters:
other- the otherTriangleMesh- Returns:
- the shortest horizontal path connecting this
TriangleMeshto the other, if it exists - Since:
- 9.10.2
-
shortest2dPathInXYPlaneProjectionTo
Returns the shortest 2D path from the projection of thisTriangleMeshto the projection of a point in the XY-plane, if such path exists.- Parameters:
point- the point asVector3d- Returns:
- the shortest 2D path between the projection of the
TriangleMeshand the point, if it exists - Since:
- 9.10.2
-
shortest2dPathInXYPlaneProjectionTo
Returns the shortest 2D path from the projection of thisTriangleMeshto the projection of anotherTriangleMeshin the XY-plane, if such path exists.- Parameters:
other- the otherTriangleMesh- Returns:
- the shortest 2D path between the projections of the two
TriangleMeshes, if it exists - Since:
- 9.10.2
-