12#ifndef __GEOMETRYUTILITIES_H
13#define __GEOMETRYUTILITIES_H
26 return 10.0 * std::numeric_limits<double>::epsilon();
127 std::vector<Gedim::GeometryUtilities::IntersectionPolygonCircleResult::Intersection>
Intersections = {};
145 std::vector<Gedim::GeometryUtilities::PolygonDivisionByAngleQuadrantResult::Types>
SubPolygonTypes;
193 std::vector<Gedim::GeometryUtilities::SplitPolygonInput::AlignedEdge>
AlignedEdges;
245 std::list<Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewVertex>
NewVertices = {};
246 std::list<Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewEdge>
NewEdges = {};
247 std::vector<Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewPolygon>
NewPolygons = {};
314 std::vector<unsigned int>
Edges = {};
321 std::vector<Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewVertex>
NewVertices = {};
322 std::vector<Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewEdge>
NewEdges = {};
323 std::vector<Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewPolygon>
NewPolygons = {};
387 std::vector<Gedim::GeometryUtilities::IntersectionSegmentCircleResult::IntersectionPosition>
SegmentIntersections = {};
490 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::LineIntersection>
LineIntersections;
513 std::map<double, Gedim::GeometryUtilities::IntersectionPolyhedronsSegmentResult::IntersectionPoint>
Points;
514 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronsSegmentResult::IntersectionSegment>
Segments;
580 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::VertexIntersection>
VertexIntersections = {};
581 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::EdgeIntersection>
EdgeIntersections = {};
582 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::FaceIntersection>
FaceIntersections = {};
583 std::vector<Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::Intersection>
Intersections = {};
637 std::vector<Gedim::GeometryUtilities::LinePolygonPositionResult::EdgeIntersection>
EdgeIntersections = {};
770 using MergeTypesList = std::vector<std::pair<Gedim::GeometryUtilities::MergePolyhedronsInput::MergeTypes, unsigned int>>;
772 std::array<Gedim::GeometryUtilities::MergePolyhedronsInput::MergeTypesList, 2>
Vertices_Type;
773 std::array<Gedim::GeometryUtilities::MergePolyhedronsInput::MergeTypesList, 2>
Edges_Type;
774 std::array<Gedim::GeometryUtilities::MergePolyhedronsInput::MergeTypesList, 2>
Faces_Type;
920 const unsigned int seed =
time(
nullptr))
const;
928 const Eigen::Vector3d &
v,
929 const Eigen::Vector3d &
v_next,
945 const Eigen::Vector3d &
v,
946 const Eigen::Vector3d &
v_next,
958 return std::atan2(std::sin(
rad_angle), std::cos(
rad_angle)) * 180.0 / std::numbers::pi;
966 : std::atan2(std::sin(
deg_angle * std::numbers::pi / 180.0), std::cos(
deg_angle * std::numbers::pi / 180.0));
1437 const Eigen::Vector3d &
point,
1457 const Eigen::Vector3d &
point,
1685 return vertices.rowwise().mean();
1693 measure_matrix.block(0, 0, vertices.cols(), 3) = vertices.transpose();
1695 const double div_dim = vertices.cols() == 3 ? 0.5 : 1.0 / 6.0;
1896 const Eigen::Vector3d &translation = Eigen::Vector3d::Zero())
const
1909 const Eigen::Vector3d &translation = Eigen::Vector3d::Zero())
const
1921 const Eigen::Vector3d &translation = Eigen::Vector3d::Zero())
const
1943 const Eigen::MatrixXd &
points)
const
2033 Eigen::MatrixXd
CreateTriangle(
const Eigen::Vector3d &
p1,
const Eigen::Vector3d &
p2,
const Eigen::Vector3d &
p3)
const;
2076 const Eigen::Vector3d &
v2,
2077 const Eigen::Vector3d &
v3,
2078 const Eigen::Vector3d &
v4)
const;
2440 const Eigen::MatrixXd &
polygon,
2465 std::map<unsigned int, unsigned int>
FacetsToVertices(
const std::vector<std::vector<unsigned int>> &facets)
const;
2466 std::map<std::pair<unsigned int, unsigned int>,
unsigned int>
FacetsToEdges(
const std::vector<std::vector<unsigned int>> &facets)
const;
2468 Polyhedron
FacetsToPolyhedron(
const Eigen::MatrixXd &points,
const std::vector<std::vector<unsigned int>> &facets)
const;
2469 std::vector<std::vector<unsigned int>>
PolyhedronToFacets(
const Polyhedron &polyhedron)
const;
2474 const Eigen::MatrixXd &edgeNormals,
2475 Eigen::Vector3d &in_center,
2478 const bool use_r0)
const;
2481 const unsigned int face_index)
const;
2484 const std::vector<bool> &faces_normal_direction)
const;
Eigen column vector.
Definition Eigen_Array.hpp:23
The GeometryUtilities class intersects 3D segments.
Definition GeometryUtilities.hpp:37
std::vector< unsigned int > PolygonTriangulationByInternalPoint(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &internalPoint) const
Convex Polygon simple Triangulation from an internal point.
Definition GeometryUtilities_Polygon.cpp:569
Eigen::Matrix3d PlaneRotationMatrix(const Eigen::Vector3d &planeNormal) const
Compute the rotation matrix of a plane from 2D to 3D.
Definition GeometryUtilities.cpp:175
PolygonCirclePositionTypes
Definition GeometryUtilities.hpp:88
@ PolygonInsideCircleOneVertexIntersection
@ PolygonInsideCircleNoIntersection
@ PolygonOutsideCircleOneIntersectionTangentOnEdge
@ PolygonOutsideCircleOneIntersectionOnVertex
@ CircleInsidePolygonNoIntersection
@ CirclePolygonMultipleIntersections
@ CircleInsidePolygonOneIntersectionTangentOnEdge
@ PolygonInsideCircleIntersectionOnlyOnVertices
@ PolygonOutsideCircleNoIntersection
void ExportPlanteToVTU(const Eigen::Vector3d &plane_origin, const Eigen::Vector3d &plane_normal, const Eigen::Vector3d &plane_translation, const Eigen::Matrix3d &plane_rotation_matrix, const std::string &exportFolder) const
Definition GeometryUtilities_Polygon.cpp:1767
std::vector< Eigen::MatrixXd > ExtractTetrahedronPoints(const Eigen::MatrixXd &polyhedronVertices, const Eigen::Vector3d &polyhedronInternalPoint, const std::vector< Eigen::Vector3d > &polyhedronFaceInternalPoints, const std::vector< unsigned int > &pointTetrahedrons) const
std::vector< std::vector< unsigned int > > PolyhedronFaceTriangulationsByFirstVertex(const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices) const
Polyhedron Face Triangulations by first vertex of each face.
Definition GeometryUtilities_Polyhedron.cpp:920
Eigen::MatrixXd CreateTriangle(const Eigen::Vector3d &p1, const Eigen::Vector3d &p2, const Eigen::Vector3d &p3) const
Create a triangle with points.
Definition GeometryUtilities.cpp:402
bool BoundingBoxesIntersects(const Eigen::MatrixXd &boudingBox_1, const Eigen::MatrixXd &boudingBox_2) const
Definition GeometryUtilities.hpp:1005
CircleDivisionByPolygonResult CircleDivisionByPolygon(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &polygonEdgeTangents, const Eigen::Vector3d &circleCenter, const double &circleRadius, const unsigned int &curvedEdgeIndex) const
Circle division from Convex Polygon sub division which intersects a polygon in a curved edge.
Definition GeometryUtilities_Polygon.cpp:1205
Gedim::GeometryUtilities::PolygonCirclePositionTypes PolygonCirclePosition(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &circleCenter, const double &circleRadius, const std::vector< PointCirclePositionResult > &vertexPositions, const IntersectionPolygonCircleResult &polygonCircleIntersections) const
Definition GeometryUtilities_Polygon.cpp:1495
Eigen::Matrix3d PolyhedronMass(const Eigen::Vector3d &polyhedronCentroid, const std::vector< Eigen::MatrixXd > &polyhedronTetrahedronPoints) const
Definition GeometryUtilities_Polyhedron.cpp:523
Eigen::MatrixXd CreateParallelogram(const Eigen::Vector3d &origin, const Eigen::Vector3d &lengthVector, const Eigen::Vector3d &widthVector) const
Create a parallelogram with origin and dimension.
Definition GeometryUtilities.cpp:412
std::vector< unsigned int > PolyhedronCoordinateSystem(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges)
Get Polyhedron Coordinate System.
Definition GeometryUtilities_Polyhedron.cpp:1079
Eigen::MatrixXi MakeConcatenation(const Eigen::MatrixXi &segments, const unsigned int starting_vertex) const
Definition GeometryUtilities_Point.cpp:191
std::vector< unsigned int > ChangePolygonOrientation(const unsigned int numPolygonVertices) const
Definition GeometryUtilities.hpp:1857
std::vector< Eigen::Matrix3d > ExtractTriangulationPoints(const Eigen::MatrixXd &points, const std::vector< unsigned int > &pointsTriangulation) const
Definition GeometryUtilities.cpp:331
bool IsValueGreater(const double &first, const double &second, const double &tolerance) const
Definition GeometryUtilities.hpp:850
std::vector< unsigned int > PolyhedronTetrahedronsByFaceTriangulations(const Eigen::MatrixXd &polyhedronVertices, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< std::vector< unsigned int > > &polyhedronFaceTriangulations, const Eigen::Vector3d &polyhedronInternalPoint) const
Polyhedron Tetrahedrons By Face Triangulations.
bool PointIsOnLine(const Eigen::Vector3d &point, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &lineTangent) const
Check if a point is on a line.
Definition GeometryUtilities.hpp:1972
Gedim::GeometryUtilities::IntersectionPolygonCircleResult IntersectionPolygonCircle(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &circleCenter, const double &circleRadius) const
Definition GeometryUtilities_Intersection.cpp:1071
std::vector< PointCirclePositionResult > PointCirclePositions(const Eigen::MatrixXd &points, const Eigen::Vector3d &circleCenter, const double &circleRadius) const
Check if points are inside a circle.
Definition GeometryUtilities_Point.cpp:640
double Tolerance2D() const
Definition GeometryUtilities.hpp:808
double Angle(const Eigen::Vector3d &v_prev, const Eigen::Vector3d &v, const Eigen::Vector3d &v_next, const double &norm_v_prev_v, const double &norm_v_next_v) const
Definition GeometryUtilities.hpp:944
Eigen::VectorXd PolyhedronEdgesLength(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges) const
Compute Polyhedron Edges Lenght.
Definition GeometryUtilities_Polyhedron.cpp:349
void ExportPolyhedronToVTU(const Polyhedron &polyhedron, const std::string &exportFolder) const
Definition GeometryUtilities.hpp:2411
double PointPlaneDistance(const Eigen::Vector3d &point, const std::array< Eigen::Vector3d, 3 > &planePoints) const
Compute point position respect to a plane formed by 3 points.
Definition GeometryUtilities_Point.cpp:161
std::vector< unsigned int > ConvexHull(const Eigen::MatrixXd &points, const bool &includeCollinear=true) const
Compute the Convex Hull of 2D points.
Definition GeometryUtilities.cpp:229
std::vector< std::vector< Eigen::Matrix3d > > PolyhedronFaceTriangulationPointsByInternalPoint(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceInternalPoints, const std::vector< std::vector< unsigned int > > &polyhedronFaceTriangulations) const
Definition GeometryUtilities_Polyhedron.cpp:954
Eigen::Vector3d SegmentNormal(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Definition GeometryUtilities.hpp:1181
double Tolerance3D() const
Definition GeometryUtilities.hpp:814
AlignedPolyhedronEdgesResult AlignedPolyhedronEdges(const Eigen::MatrixXd &polyhedronVertices, const std::vector< std::vector< unsigned int > > &verticesAdjacency, const std::vector< std::vector< unsigned int > > &edgesAdjacency, const std::vector< std::unordered_map< unsigned int, unsigned int > > &adjacencyVerticesMap, const Eigen::MatrixXd &polyhedronEdgeTangents, const Eigen::VectorXd &polyhedronEdgeSquaredLenghts) const
Definition GeometryUtilities_Polyhedron.cpp:1388
bool IsPointInsideTetrahedron(const Eigen::MatrixXd &tetrahedron, const Eigen::Vector3d &point) const
Definition GeometryUtilities_Point.cpp:603
Eigen::MatrixXd CreateRectangle(const Eigen::Vector3d &origin, const double &base, const double &height) const
Create a rectangle with origin and dimensions parallel to axis.
Definition GeometryUtilities.hpp:2045
std::vector< Eigen::Matrix3d > PolyhedronFaceRotationMatrices(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations) const
Compute Polyhedron Faces Rotation matrix.
Definition GeometryUtilities_Polyhedron.cpp:430
std::vector< std::vector< unsigned int > > PolyhedronFaceTriangulationsByEarClipping(const unsigned int numPolyhedronFaces, const std::vector< Eigen::MatrixXd > &polyhedronFaces2DVertices) const
Polyhedron Face Triangulations by ear clipping of each face.
Definition GeometryUtilities_Polyhedron.cpp:930
double SegmentLength(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Definition GeometryUtilities.hpp:1164
bool IsPolygonCoplanar(const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin, const Eigen::MatrixXd &polygonVertices, const std::vector< unsigned int > &polygonUnalignedVertices) const
verify if the polygon is in the coplana to a plane
Definition GeometryUtilities_Polygon.cpp:1674
double AngleDegreeToRadians(const double °_angle) const
Definition GeometryUtilities.hpp:961
Eigen::Vector3d PolygonNormal(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon tridimensional normalized Normal.
Definition GeometryUtilities_Polygon.cpp:62
Eigen::MatrixXd PolygonEdgeNormals(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon edge normals outgoing the polygon.
Definition GeometryUtilities_Polygon.cpp:137
Eigen::Vector3d PolygonBarycenter(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon barycenter as a mean of all vertices.
Definition GeometryUtilities.hpp:1710
Eigen::Vector3d PolygonCentroid(const Eigen::MatrixXd &subPolygonCentroids, const Eigen::VectorXd &subPolygonAreas, const double &polygonArea) const
Compute the Polygon centroid using polygon sub-division.
Definition GeometryUtilities.hpp:1734
std::array< Eigen::Vector3d, 2 > PolygonTangents(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &polygonNormal) const
Definition GeometryUtilities_Polygon.cpp:81
Eigen::Vector3d SimplexBarycenter(const Eigen::MatrixXd &vertices) const
Compute the simplex barycenter as a mean of all vertices.
Definition GeometryUtilities.hpp:1682
~GeometryUtilities()
Definition GeometryUtilities.cpp:26
Gedim::GeometryUtilities::SplitPolygonWithSegmentResult SplitPolygonWithSegment(const SplitPolygonInput &input) const
Split a polygon with n vertices numbered from 0 to n counterclockwise given a segment contained insid...
Definition GeometryUtilities_Split.cpp:21
bool PolygonIsConvex(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &convexHull) const
Check if Polygon is Convex.
Definition GeometryUtilities_Polygon.cpp:400
double AngleRadiansToDegree(const double &rad_angle) const
Definition GeometryUtilities.hpp:956
double PolygonArea(const Eigen::MatrixXd &polygonVertices) const
Definition GeometryUtilities_Polygon.cpp:1354
Eigen::MatrixXd ExtractPoints(const Eigen::MatrixXd &points, const std::vector< unsigned int > &filter) const
Definition GeometryUtilities.cpp:322
bool IsPointInBoundingBox(const Eigen::Vector3d &point, const Eigen::MatrixXd &boudingBox) const
Definition GeometryUtilities.hpp:995
std::vector< Eigen::MatrixXd > ExtractTetrahedronPoints(const Eigen::MatrixXd &polyhedronVertices, const Eigen::Vector3d &polyhedronInternalPoint, const std::vector< unsigned int > &pointTetrahedrons) const
Eigen::Matrix3d PolygonInertia(const Eigen::Vector3d &polygonCentroid, const std::vector< Eigen::Matrix3d > &polygonTriangulationPoints) const
Definition GeometryUtilities_Polygon.cpp:1439
Eigen::Matrix3d PolygonRotationMatrix(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &polygonNormal, const Eigen::Vector3d &polygonTranslation) const
Compute the rotation matrix and translation vector of a tridimensional Polygon.
Definition GeometryUtilities_Polygon.cpp:360
double PolarAngle(const Eigen::Vector3d &v_prev, const Eigen::Vector3d &v, const Eigen::Vector3d &v_next, const double &norm_v_prev_v, const double &norm_v_next_v) const
Definition GeometryUtilities.hpp:927
Eigen::Vector3d PolygonCentroidByIntegral(const Eigen::MatrixXd &polygonVertices, const Eigen::VectorXd &edgeLengths, const Eigen::MatrixXd &edgeTangents, const Eigen::MatrixXd &edgeNormals, const double &polygonArea) const
Polygon Area By Integral on edges.
Definition GeometryUtilities_Polygon.cpp:280
Eigen::MatrixXd PolyhedronEdgeTangents(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges) const
Compute Polyhedron Edges Tangent.
Definition GeometryUtilities_Polyhedron.cpp:362
PointCirclePositionResult PointCirclePosition(const Eigen::Vector3d &point, const Eigen::Vector3d &circleCenter, const double &circleRadius) const
Check if point is inside a circle.
Definition GeometryUtilities_Point.cpp:627
Gedim::GeometryUtilities::IntersectionSegmentCircleResult IntersectionSegmentCircle(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::Vector3d &circleCenter, const double &circleRadius) const
Compute the intersection between the a segment and a circle.
Definition GeometryUtilities_Intersection.cpp:1018
std::vector< std::vector< unsigned int > > PolyhedronFacesUnalignedVertices(const std::vector< Eigen::MatrixXd > &polyhedronFacesRotatedVertices) const
Compute Polyhedron Faces Unaligned Vertices Indices.
Definition GeometryUtilities_Polyhedron.cpp:473
Gedim::GeometryUtilities::IntersectionSegmentPlaneResult IntersectionSegmentPlane(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin) const
Intersection between a Segment, represented by origin and end and a plane represented by the normal a...
Definition GeometryUtilities_Intersection.cpp:291
std::vector< unsigned int > UnalignedPolyhedronPoints(const Eigen::MatrixXd &polyhedronVertices, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::Vector3d > &polyhedronFacesTranslation, const std::vector< Eigen::Matrix3d > &polyhedronFacesRotationMatrix, const std::vector< std::vector< unsigned int > > &polyhedronUnaligedFaces, const std::vector< std::vector< unsigned int > > &polyhedronFacesUnalignedVertices) const
Extract the circumscribed unaligned points (minimum 4) in a polyhedron.
Definition GeometryUtilities_Polyhedron.cpp:1314
std::vector< Eigen::MatrixXd > PolyhedronFaceVertices(const Eigen::MatrixXd &polyhedronVertices, const std::vector< Eigen::MatrixXi > &polyhedronFaces) const
Compute Polyhedron Faces Vertices.
Definition GeometryUtilities_Polyhedron.cpp:375
Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult IntersectionPolyhedronPlane(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin, const Eigen::Matrix3d &planeRotationMatrix, const Eigen::Vector3d &planeTranslation) const
Intersection between a Polyhedron and a Plane.
Definition GeometryUtilities_Intersection.cpp:335
PointSegmentPositionTypes
Definition GeometryUtilities.hpp:68
@ OnSegmentLineBeforeOrigin
PolygonDivisionByAngleQuadrantResult PolygonOutsideCircleDivisionByAngleQuadrant(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &polygonEdgeTangents, const Eigen::Vector3d &circleCenter, const double &circleRadius, const unsigned int &curvedEdgeIndex) const
Convex Polygon sub division by angle quadrant which intersects a polygon in a curved edge.
Definition GeometryUtilities_Polygon.cpp:589
CompareTypes
Definition GeometryUtilities.hpp:43
Polyhedron CreateTetrahedronWithOrigin(const Eigen::Vector3d &origin, const Eigen::Vector3d &lengthVector, const Eigen::Vector3d &heightVector, const Eigen::Vector3d &widthVector) const
Create a Tetrahedron with origin and dimension.
Definition GeometryUtilities_Polyhedron.cpp:26
std::vector< double > RandomCoordinates(const unsigned int size, const bool insertExtremes, const double &minDistance, const unsigned int seed=time(nullptr)) const
Definition GeometryUtilities.cpp:108
Gedim::GeometryUtilities::IntersectionPolyhedronsSegmentResult IntersectionPolyhedronsSegment(const std::vector< Polyhedron > &polyhedrons, const std::vector< std::vector< Eigen::Vector3d > > &polyhedronFaceNormals, const std::vector< std::vector< bool > > &polyhedronFaceNormalDirections, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::Vector3d &segmentTangent) const
Intersection between a collectio of Polyhedrons and a segment.
Definition GeometryUtilities_Intersection.cpp:905
PolygonOrientations
Definition GeometryUtilities.hpp:61
Eigen::MatrixXd PolygonEdgesCentroid(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon edges centroid.
Definition GeometryUtilities_Polygon.cpp:92
std::vector< unsigned int > PolygonTriangulationByEarClipping(const Eigen::MatrixXd &polygonVertices) const
Concave Polygon Triangulation with ear clipping algorithm.
Definition GeometryUtilities_Polygon.cpp:475
bool PointIs2D(const Eigen::Vector3d &point) const
Definition GeometryUtilities.hpp:1051
double PolyhedronDiameter(const Eigen::MatrixXd &polyhedronVertices) const
Compute the Polyhedron diameter defined as the maximum distance between the vertices.
Definition GeometryUtilities.hpp:2161
Eigen::Matrix3d PlaneReflectionMatrix(const Eigen::Vector3d &plane_normal) const
Definition GeometryUtilities.cpp:194
double PolyhedronVolumeByBoundaryIntegral(const std::vector< std::vector< Eigen::Matrix3d > > &polyhedronFaceRotatedTriangulationPoints, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< bool > &polyhedronFaceNormalDirections, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations, const std::vector< Eigen::Matrix3d > &polyhedronFaceRotationMatrices, const Eigen::MatrixXd &referenceQuadraturePoints=(Eigen::MatrixXd(3, 1)<< 1.0/3.0, 1.0/3.0, 0.0).finished(), const Eigen::VectorXd &referenceQuadratureWeights=Eigen::VectorXd::Constant(1, 0.5)) const
Compute the Polyhedron Volume.
Definition GeometryUtilities_Polyhedron.cpp:210
Polyhedron CreateParallelepipedWithOrigin(const Eigen::Vector3d &origin, const Eigen::Vector3d &lengthVector, const Eigen::Vector3d &heightVector, const Eigen::Vector3d &widthVector) const
Create a Parallelepiped with origin and dimension.
Definition GeometryUtilities_Polyhedron.cpp:102
std::vector< GeometryUtilities::Polyhedron > SplitPolyhedronWithPlaneResultToPolyhedra(const SplitPolyhedronWithPlaneResult &result) const
Definition GeometryUtilities_SplitPolyhedron.cpp:611
Eigen::MatrixXd CreateSquare(const Eigen::Vector3d &origin, const double &edgeLength) const
Create a square with origin and dimensions parallel to axis.
Definition GeometryUtilities.hpp:2053
double PolygonAreaByInternalIntegral(const std::vector< Eigen::Matrix3d > &polygonTriangulationPoints, const Eigen::VectorXd &referenceQuadratureWeights=Eigen::VectorXd::Constant(1, 0.5)) const
Polygon Area By Internal Integral.
Definition GeometryUtilities_Polygon.cpp:214
std::vector< std::list< double > > IntersectionsBetweenSegments(const std::vector< Eigen::MatrixXd > &segmentsVertices, const std::vector< Eigen::Vector3d > &segmentsTangent, const std::vector< Eigen::Vector3d > &segmentsBarycenter, const std::vector< double > &segmentsLength) const
Compute the intersection between a collection of segments.
Definition GeometryUtilities_Intersection.cpp:251
bool IsValueGreaterOrEqual(const double &first, const double &second, const double &tolerance) const
Definition GeometryUtilities.hpp:858
Gedim::GeometryUtilities::SplitPolygonWithCircleResult SplitPolygonWithCircle(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &circleCenter, const double &circleRadius, const std::vector< PointCirclePositionResult > &vertexPositions, const IntersectionPolygonCircleResult &polygonCircleIntersections, const PolygonCirclePositionTypes &polygonCirclePosition) const
Split a polygon with n vertices numbered from 0 to n counterclockwise given a cirle.
Definition GeometryUtilities_Split.cpp:839
PointSegmentPositionTypes PointSegmentPosition(const Eigen::Vector3d &point, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Compute point position respect to a segment.
std::vector< std::array< Eigen::Vector3d, 2 > > PolyhedronFaceTangents(const std::vector< Eigen::MatrixXd > &polyhedronFacesVertices, const std::vector< Eigen::Vector3d > &polyhedronFacesNormal, const std::vector< bool > &polyhedronFacesNormalDirection) const
Definition GeometryUtilities_Polyhedron.cpp:495
Eigen::VectorXd PolyhedronCentroidFacesDistance(const Eigen::Vector3d &polyhedronCentroid, const std::vector< Eigen::Vector3d > &polyhedronFacesNormal, const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices) const
Definition GeometryUtilities_Polyhedron.cpp:680
Eigen::MatrixXd RotatePoints(const Eigen::MatrixXd &points, const Eigen::Matrix3d &rotationMatrix, const Eigen::Vector3d &translation=Eigen::Vector3d::Zero()) const
Rotate Points P using rotation matrix Q and translation t: Q * P + t.
Definition GeometryUtilities.hpp:1894
bool IsValueZero(const double &value, const double &tolerance) const
Definition GeometryUtilities.hpp:891
bool IsValuePositive(const double &value, const double &tolerance) const
Definition GeometryUtilities.hpp:877
std::vector< std::vector< bool > > PolyhedronFaceEdgeDirections(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces) const
Compute Polyhedron Faces Edge Direction.
Definition GeometryUtilities_Polyhedron.cpp:392
Polyhedron FacetsToPolyhedron(const Eigen::MatrixXd &points, const std::vector< std::vector< unsigned int > > &facets) const
Definition GeometryUtilities_Polyhedron.cpp:1566
Eigen::Vector3d PolygonTranslation(const Eigen::MatrixXd &polygonVertices) const
Compute the translation vector of a tridimensional Polygon.
Definition GeometryUtilities.hpp:1822
bool CheckTrianglesIntersection(const Eigen::MatrixX3d &triangle_one, const Eigen::MatrixX3d &triangle_two, const bool admit_boundary=true) const
Definition GeometryUtilities_Polygon.cpp:26
double RelativeDifference(const double &first, const double &second, const double &tolerance) const
Definition GeometryUtilities.hpp:825
PointPlanePositionTypes PointPlanePosition(const double &pointPlaneDistance) const
Compute point position respect to a plane.
Definition GeometryUtilities_Point.cpp:181
double SegmentIntercept(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Compute the segment intercept q of line y = m * x + q.
Definition GeometryUtilities.hpp:1204
std::vector< Eigen::MatrixXi > ChangePolyhedronFacesOrientation(const Gedim::GeometryUtilities::Polyhedron &polyhedron, const std::vector< bool > &faces_normal_direction) const
Change Polyhedron Face Orientation if face_normal_direction is false.
Definition GeometryUtilities_Polyhedron.cpp:1648
PolygonOrientations PolygonOrientation(const std::vector< unsigned int > &convexHull) const
Definition GeometryUtilities_Polygon.cpp:428
double PolygonArea3D(const Eigen::MatrixXd &polygonVertices) const
Definition GeometryUtilities_Polygon.cpp:1369
std::vector< Eigen::Matrix3d > ExtractTriangulationPointsByInternalPoint(const Eigen::MatrixXd &points, const Eigen::Vector3d &internalPoint, const std::vector< unsigned int > &pointsTriangulation) const
Definition GeometryUtilities.cpp:348
std::vector< bool > PolyhedronFaceNormalDirections(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const Eigen::Vector3d &pointInsidePolyhedron, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals) const
Compute Polyhedron Face Normal Directions.
CompareTypes CompareValues(const double &first, const double &second, const double &tolerance) const
Compare two values according to tolerance.
Definition GeometryUtilities.cpp:161
Eigen::MatrixXd SplitPolygonWithCircleBuildSubPolygon(const SplitPolygonWithCircleResult &splitResult, const unsigned int &subPolygonIndex, const Eigen::MatrixXd &polygonVertices, const Gedim::GeometryUtilities::IntersectionPolygonCircleResult &polygonCircleIntersections) const
Build the subpolygon coordinates from split result.
Definition GeometryUtilities_Split.cpp:1241
bool CheckNoSpheresIntersection(const Eigen::Vector3d &firstSphereCenter, const Eigen::Vector3d &secondSphereCenter, const double &firstSphereDiameter, const double &secondSphereDiameter) const
Check if two spheres do not intersect.
Definition GeometryUtilities.hpp:1220
Gedim::GeometryUtilities::PointPolyhedronPositionResult PointPolyhedronPosition(const Eigen::Vector3d &point, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::MatrixXd > &polyhedronFaceRotatedVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< bool > &polyhedronFaceNormalDirections, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations, const std::vector< Eigen::Matrix3d > &polyhedronFaceRotationMatrices) const
Check if point is inside a polygon.
Eigen::MatrixXd PointsBoundingBox(const Eigen::MatrixXd &points) const
Definition GeometryUtilities_Point.cpp:49
std::vector< std::vector< unsigned int > > PolyhedronToFacets(const Polyhedron &polyhedron) const
Definition GeometryUtilities_Polyhedron.cpp:1612
bool IsPointOnPlane(const double &pointPlaneDistance) const
Definition GeometryUtilities.hpp:1147
Eigen::Matrix3d PolyhedronInertia(const Eigen::Vector3d &polyhedronCentroid, const std::vector< Eigen::MatrixXd > &polyhedronTetrahedraPoints) const
Definition GeometryUtilities_Polyhedron.cpp:601
Eigen::MatrixXd PolygonEdgeTangents(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon edge tangents.
Definition GeometryUtilities_Polygon.cpp:122
std::vector< bool > PointsAreOnLine(const Eigen::MatrixXd &points, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &lineTangent) const
Check if a set of points are on a line.
Definition GeometryUtilities_Point.cpp:655
double PolyhedronInRadius(const Eigen::VectorXd &polyhedronCentroidFacesDistance) const
Definition GeometryUtilities.hpp:2263
Eigen::VectorXd PolygonCentroidVerticesDistance(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &polygonCentroid) const
Definition GeometryUtilities_Polygon.cpp:343
Eigen::Vector3d BarycentricCoordinatesToPoint2D(const Eigen::Matrix3d &triangle, const std::array< double, 3 > &barycentric_coordinates) const
Definition GeometryUtilities_Point.cpp:696
bool IsPointOnLine(const Eigen::Vector3d &point, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &lineTangent, const double &lineTangentSquaredLength) const
Definition GeometryUtilities_Point.cpp:99
bool PointsAre2D(const Eigen::MatrixXd &points) const
Definition GeometryUtilities.hpp:1058
std::map< unsigned int, unsigned int > FacetsToVertices(const std::vector< std::vector< unsigned int > > &facets) const
Definition GeometryUtilities_Polyhedron.cpp:1525
bool IsValueNegative(const double &value, const double &tolerance) const
Definition GeometryUtilities.hpp:884
Eigen::VectorXd PolygonCentroidEdgesDistance(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &polygonCentroid, const Eigen::MatrixXd &polygonEdgeNormals) const
Definition GeometryUtilities_Polygon.cpp:325
PolygonDivisionByCircleResult PolygonDivisionByCircle(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &polygonEdgeTangents, const Eigen::Vector3d &circleCenter, const double &circleRadius, const unsigned int &curvedEdgeIndex) const
Convex Polygon sub division from a circle which intersects a polygon in a curved edge.
Definition GeometryUtilities_Polygon.cpp:971
PolygonTypes PolygonType(const unsigned int &numPolygonVertices, const bool &isPolygonConvex) const
Definition GeometryUtilities_Polygon.cpp:416
Eigen::Vector3d PlaneReflectionTranslation(const Eigen::Vector3d &plane_normal, const Eigen::Vector3d &planeOrigin) const
Definition GeometryUtilities.cpp:206
bool IsPointOnPlane(const Eigen::Vector3d &point, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin) const
Definition GeometryUtilities.hpp:1156
void PolygonChebyshevCenter(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &edgeNormals, Eigen::Vector3d &in_center, double &in_radius, const double r0, const bool use_r0) const
Definition GeometryUtilities_Polygon.cpp:238
bool IsPointZero(const Eigen::Vector3d &point) const
Definition GeometryUtilities.hpp:1019
IntersectionPolyhedronLineResult IntersectionPolyhedronLine(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< bool > &polyhedronFaceNormalDirections, const Eigen::Vector3d &lineTangent, const Eigen::Vector3d &lineOrigin) const
Intersection between a Polyhedron and a line.
Definition GeometryUtilities_Intersection.cpp:590
IntersectionSegmentSegmentResult IntersectionSegmentSegment(const Eigen::Vector3d &firstSegmentOrigin, const Eigen::Vector3d &firstSegmentEnd, const Eigen::Vector3d &secondSegmentOrigin, const Eigen::Vector3d &secondSegmentEnd) const
Compute the intersection between the two segments.
Definition GeometryUtilities_Intersection.cpp:50
Eigen::MatrixXd PointsDistance(const Eigen::MatrixXd &points) const
Definition GeometryUtilities_Point.cpp:28
Eigen::VectorXd PointDistances(const Eigen::MatrixXd &points, const Eigen::Vector3d &point) const
compute the distance between a point and a list of points
Definition GeometryUtilities_Point.cpp:23
double PointLineDistance(const Eigen::Vector3d &point, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &normalToLine) const
Compute the distance between a point and a line.
Definition GeometryUtilities.hpp:1044
double Tolerance1DSquared() const
Definition GeometryUtilities.hpp:802
bool AreLineCoplanar(const Eigen::Vector3d &firstLineOrigin, const Eigen::Vector3d &firstLineTangent, const Eigen::Vector3d &secondLineOrigin, const Eigen::Vector3d &secondLineTangent) const
Definition GeometryUtilities_Intersection.cpp:23
std::vector< Eigen::MatrixXd > PolyhedronFaceRotatedVertices(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations, const std::vector< Eigen::Matrix3d > &polyhedronFaceRotationMatrices) const
Compute Polyhedron Faces Rotated Vertices 2D.
Definition GeometryUtilities_Polyhedron.cpp:456
Eigen::Matrix2d PolygonMass(const Eigen::Vector3d &polygonCentroid, const std::vector< Eigen::Matrix3d > &polygonTriangulationPoints) const
Definition GeometryUtilities_Polygon.cpp:1384
std::vector< Eigen::Vector3d > PolyhedronFaceBarycenter(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices) const
Compute Polyhedron Faces barycenters.
Definition GeometryUtilities_Polyhedron.cpp:512
bool PolyhedronIsConvex(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::MatrixXd > &polyhedronFaceRotatedVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceInternalPoints, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< bool > &polyhedronFaceNormalDirections, const Eigen::Vector3d &polyhedronInternalPoint) const
Check if Polyhedron is Convex.
Definition GeometryUtilities_Polyhedron.cpp:697
PolygonTypes
Definition GeometryUtilities.hpp:51
bool PointsAreCoincident(const Eigen::Vector3d &firstPoint, const Eigen::Vector3d &secondPoint) const
Definition GeometryUtilities.hpp:1027
LinePolygonPositionResult LinePolygonPosition(const Eigen::Vector3d &lineTangent, const Eigen::Vector3d &lineOrigin, const Eigen::MatrixXd &polygonVertices) const
Definition GeometryUtilities_Polygon.cpp:1587
Polyhedron CreatePolyhedronWithExtrusion(const Eigen::MatrixXd &polygonVertices, const Eigen::Vector3d &heightVector) const
Create Polyhedron With Extrusion.
Definition GeometryUtilities.hpp:2095
std::vector< unsigned int > FindPointInPoints(const Eigen::MatrixXd &points, const Eigen::Vector3d &point) const
Find a point in point list.
Definition GeometryUtilities_Point.cpp:86
bool IsValueLower(const double &first, const double &second, const double &tolerance) const
Definition GeometryUtilities.hpp:865
Eigen::Vector3d PlaneTranslation(const Eigen::Vector3d &planeOrigin) const
Compute the translation vector of a plane from 2D to 3D.
Definition GeometryUtilities.hpp:1879
double PolyhedronVolumeByInternalIntegral(const std::vector< Eigen::MatrixXd > &polyhedronTetrahedronVertices, const Eigen::VectorXd &referenceQuadratureWeights=Eigen::VectorXd::Constant(1, 1.0/6.0)) const
Polyhedron Volume By Internal Integral.
Definition GeometryUtilities_Polyhedron.cpp:255
double PolygonDiameter(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon diameter defined as the maximum distance between the vertices.
Definition GeometryUtilities.hpp:1812
std::vector< unsigned int > PolygonTriangulationByFirstVertex(const Eigen::MatrixXd &polygonVertices) const
Convex Polygon simple Triangulation from the first vertex.
Definition GeometryUtilities_Polygon.cpp:445
Eigen::MatrixXd fibonacci_sphere(const unsigned int num_points) const
Definition GeometryUtilities.cpp:49
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult IntersectionPolyhedronSegment(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::Vector3d &segmentTangent, const IntersectionPolyhedronLineResult &polyhedronLineIntersections) const
Intersection between a Polyhedron and a segment.
Definition GeometryUtilities_Intersection.cpp:798
Polyhedron CreateTetrahedronWithVertices(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2, const Eigen::Vector3d &v3, const Eigen::Vector3d &v4) const
Create a Tetrahedron with the four vertices.
Definition GeometryUtilities_Polyhedron.cpp:64
double PointDistance(const Eigen::Vector3d &firstPoint, const Eigen::Vector3d &secondPoint) const
compute the Point distance
Definition GeometryUtilities.hpp:973
std::vector< Eigen::Vector3d > PolyhedronFaceTranslations(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices) const
Compute Polyhedron Faces translation vectors.
Definition GeometryUtilities_Polyhedron.cpp:446
Eigen::MatrixXd RotatePointsFrom3DTo2D(const Eigen::MatrixXd &points, const Eigen::Matrix3d &rotationMatrix, const Eigen::Vector3d &translation=Eigen::Vector3d::Zero()) const
Rotate Points P From 3D To 2D using rotation matrix Q and translation t: Q * (P - t)
Definition GeometryUtilities.hpp:1919
double PolygonAspectRatio(const double &polygonDiameter, const double &polygonInRadius) const
Definition GeometryUtilities.hpp:1805
std::map< std::pair< unsigned int, unsigned int >, unsigned int > FacetsToEdges(const std::vector< std::vector< unsigned int > > &facets) const
Definition GeometryUtilities_Polyhedron.cpp:1540
bool IsValueLowerOrEqual(const double &first, const double &second, const double &tolerance) const
Definition GeometryUtilities.hpp:870
std::vector< Eigen::Vector3d > PolyhedronFaceNormals(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices) const
Compute Polyhedron Faces Normals.
Definition GeometryUtilities_Polyhedron.cpp:484
Eigen::Vector3d SegmentBarycenter(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Compute the segment barycenter as a mean of all vertices.
Definition GeometryUtilities.hpp:1703
double SegmentSlope(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Compute the segment slope m of line y = m * x + q.
Definition GeometryUtilities.hpp:1193
Eigen::MatrixXd RotatePointsFrom2DTo3D(const Eigen::MatrixXd &points, const Eigen::Matrix3d &rotationMatrix, const Eigen::Vector3d &translation=Eigen::Vector3d::Zero()) const
Rotate Points P From 2D To 3D using rotation matrix Q and translation t: Q * P + t.
Definition GeometryUtilities.hpp:1907
bool PointIsAligned(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::Vector3d &point) const
Check if a point is aligned to a line identified by a segment.
Definition GeometryUtilities.hpp:1962
Eigen::MatrixXd generate_uniform_random_points_in_sphere(const unsigned int num_points, const double radius=1.0) const
Definition GeometryUtilities.cpp:30
Eigen::MatrixXd PolyhedronEdgesCentroid(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges) const
Compute Polyhedron Edges Centroid.
Definition GeometryUtilities_Polyhedron.cpp:336
std::vector< std::vector< unsigned int > > PolyhedronFaceTriangulations(const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< std::vector< unsigned int > > &localFaceTriangulations) const
Polyhedron Face Triangulations of each face.
Definition GeometryUtilities_Polyhedron.cpp:901
PointCirclePositionResult
Definition GeometryUtilities.hpp:588
Eigen::MatrixXi ChangePolyhedronFaceOrientation(const Gedim::GeometryUtilities::Polyhedron &polyhedron, const unsigned int face_index) const
Definition GeometryUtilities_Polyhedron.cpp:1628
Eigen::Vector3d PolyhedronCentroid(const std::vector< std::vector< Eigen::Matrix3d > > &polyhedronFaceRotatedTriangulationPoints, const std::vector< Eigen::Vector3d > &polyhedronFaceNormals, const std::vector< bool > &polyhedronFaceNormalDirections, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations, const std::vector< Eigen::Matrix3d > &polyhedronFaceRotationMatrices, const double &polyhedronVolume) const
Compute the Polyhedron centroid.
Definition GeometryUtilities_Polyhedron.cpp:279
MergePolyhedronsInput MergePolyhedronByFace(const std::array< Polyhedron, 2 > &polyhedrons, const std::array< unsigned int, 2 > polyhedrons_common_face_index, const bool remove_common_face) const
Definition GeometryUtilities_merged_polyhedrons.cpp:17
void ExportPolyhedronToVTU(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::string &exportFolder) const
Export Polyhedron To VTU.
Definition GeometryUtilities_Polyhedron.cpp:1104
Eigen::MatrixXd CreateEllipse(const double &axisMajorLength, const double &axisMinorLength, const unsigned int &resolution) const
Create 2D Ellipse approximation with 2D polygon.
Definition GeometryUtilities.cpp:366
PointPlanePositionTypes
Definition GeometryUtilities.hpp:80
void ExportPolygonToVTU(const unsigned int &index, const Eigen::MatrixXd &polygon, const std::vector< Eigen::Matrix3d > &polygon_triangles, const double &polygon_volume, const Eigen::Vector3d &polygon_centroid, const Eigen::MatrixXd &polygon_edges_centroid, const Eigen::MatrixXd &polygon_edges_normal, const std::vector< bool > &polygon_edges_normal_direction, const std::string &exportFolder) const
Definition GeometryUtilities_Polygon.cpp:1691
PolygonDivisionByAngleQuadrantResult PolygonInsideCircleDivisionByAngleQuadrant(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &polygonEdgeTangents, const Eigen::Vector3d &circleCenter, const double &circleRadius, const unsigned int &curvedEdgeIndex) const
Convex Polygon sub division by angle quadrant which intersects a polygon in a curved edge.
Definition GeometryUtilities_Polygon.cpp:784
double PolygonInRadius(const Eigen::VectorXd &polygonCentroidEdgesDistance) const
Definition GeometryUtilities.hpp:1797
Eigen::Vector3d PolygonCentroid(const Eigen::MatrixXd &polygonVertices, const double &polygonArea) const
Compute the Polygon centroid as described in https://en.wikipedia.org/wiki/Centroid.
Definition GeometryUtilities_Polygon.cpp:152
double PointSegmentProjection(const Eigen::Vector3d &point, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Project point on a segment line.
Definition GeometryUtilities.hpp:1121
bool IsPointInsidePolygon_RayCasting(const Eigen::Vector3d &point, const Eigen::MatrixXd &polygonVertices) const
IsPointInsidePolygon using RayCasting algorithm (see https://en.wikipedia.org/wiki/Point_in_polygon)
Definition GeometryUtilities.hpp:1410
Polyhedron CreateCubeWithOrigin(const Eigen::Vector3d &origin, const double &edgeLength) const
Create a Cube with origin aligned to axis.
Definition GeometryUtilities.hpp:2111
bool IsPointInsidePolygon(const Eigen::Vector3d &point, const Eigen::MatrixXd &polygonVertices) const
Definition GeometryUtilities.hpp:1399
Eigen::Vector3d SegmentTangent(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
Definition GeometryUtilities.hpp:1172
bool AreValuesEqual(const double &first, const double &second, const double &tolerance) const
Check if two values are equal according to tolerance.
Definition GeometryUtilities.hpp:842
Eigen::MatrixXd PlaneToPolygon(const Eigen::Vector3d &plane_normal, const Eigen::Vector3d &plane_origin) const
Definition GeometryUtilities.cpp:213
std::vector< std::vector< unsigned int > > PolyhedronFaceTriangulationsByInternalPoint(const Eigen::MatrixXd &polyhedronVertices, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::Vector3d > &polyhedronFaceInternalPoints) const
Polyhedron Face Triangulations by internal point of each face.
Definition GeometryUtilities_Polyhedron.cpp:970
double PointsMaxDistance(const Eigen::MatrixXd &points) const
Definition GeometryUtilities_Point.cpp:63
MergePolyhedronsResult MergePolyhedrons(const std::array< Polyhedron, 2 > &polyhedrons, const MergePolyhedronsInput &merge_information={}) const
Merge two Polyhedrons not intersecting.
Definition GeometryUtilities_merged_polyhedrons.cpp:85
std::vector< bool > PointsAreAligned(const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd, const Eigen::MatrixXd &points) const
Check if a set of points are aligned to a line identified by a segment.
Definition GeometryUtilities.hpp:1941
std::vector< unsigned int > PolyhedronTetrahedronsByFaceTriangulations(const Eigen::MatrixXd &polyhedronVertices, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< std::vector< unsigned int > > &polyhedronFaceTriangulations, const std::vector< Eigen::Vector3d > &polyhedronFaceInternalPoints, const Eigen::Vector3d &polyhedronInternalPoint) const
Polyhedron Tetrahedrons By Face Triangulations with face internal points.
std::vector< unsigned int > UnalignedPoints(const Eigen::MatrixXd &points, const unsigned int numDesiredUnalignedPoints=0) const
Extract the circumscribed unaligned points (minimum 2) in a set of points.
Definition GeometryUtilities_Point.cpp:708
double PointCurvilinearCoordinate(const Eigen::Vector3d &point, const Eigen::Vector3d &segmentOrigin, const Eigen::Vector3d &segmentEnd) const
compute the Point Curvilinear Coordinate of segment
Definition GeometryUtilities.hpp:1069
double Tolerance1D() const
Definition GeometryUtilities.hpp:797
Gedim::GeometryUtilities::SplitPolygonWithPlaneResult SplitPolygonWithPlane(const Eigen::MatrixXd &polygonVertices, const Eigen::MatrixXd &polygonEdgeTangents, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin, const Eigen::Vector3d &polygonTranslation, const Eigen::Matrix3d &polygonRotationMatrix) const
Split 3d Polygon With Plane.
Definition GeometryUtilities_SplitPolyhedron.cpp:21
Eigen::Vector3d PolyhedronBarycenter(const Eigen::MatrixXd &polyhedronVertices) const
Compute the polyhedron barycenter as a mean of all vertices.
Definition GeometryUtilities.hpp:1718
Gedim::GeometryUtilities::PointPolygonPositionResult PointPolygonPosition_RayCasting(const Eigen::Vector3d &point, const Eigen::MatrixXd &polygonVertices) const
Definition GeometryUtilities_Point.cpp:302
std::vector< double > EquispaceCoordinates(const double &step, const bool &insertExtremes) const
Definition GeometryUtilities.cpp:75
std::vector< std::vector< Eigen::Matrix3d > > PolyhedronFaceExtractTriangulationPoints(const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< std::vector< unsigned int > > &polyhedronFaceTriangulations) const
Definition GeometryUtilities_Polyhedron.cpp:941
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult SplitPolyhedronWithPlane(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< Eigen::MatrixXd > &polyhedronFaceVertices, const std::vector< Eigen::MatrixXd > &polyhedronFaceEdgeTangents, const std::vector< Eigen::Vector3d > &polyhedronFaceTranslations, const std::vector< Eigen::Matrix3d > &polyhedronFaceRotationMatrices, const Eigen::Vector3d &planeNormal, const Eigen::Vector3d &planeOrigin, const Eigen::Matrix3d &planeRotationMatrix, const Eigen::Vector3d &planeTranslation) const
Definition GeometryUtilities_SplitPolyhedron.cpp:141
std::array< double, 3 > PointToBarycentricCoordinates2D(const Eigen::Matrix3d &triangle, const Eigen::Vector3d &point) const
Definition GeometryUtilities_Point.cpp:673
Eigen::VectorXd PolygonEdgeLengths(const Eigen::MatrixXd &polygonVertices) const
Compute the Polygon edge lengths.
Definition GeometryUtilities_Polygon.cpp:107
double PolygonAreaByBoundaryIntegral(const Eigen::MatrixXd &polygonVertices, const Eigen::VectorXd &edgeLengths, const Eigen::MatrixXd &edgeTangents, const Eigen::MatrixXd &edgeNormals, const Eigen::MatrixXd &referenceQuadraturePoints=(Eigen::MatrixXd(3, 1)<< 0.5, 0.0, 0.0).finished(), const Eigen::VectorXd &referenceQuadratureWeights=Eigen::VectorXd::Ones(1)) const
Polygon Area By Integral on edges.
Definition GeometryUtilities_Polygon.cpp:175
Gedim::GeometryUtilities::PointPolygonPositionResult PointPolygonPosition(const Eigen::Vector3d &point, const Eigen::MatrixXd &polygonVertices) const
Check if point is inside a polygon.
Definition GeometryUtilities_Point.cpp:253
double PointLineCurvilinearCoordinate(const Eigen::Vector3d &point, const Eigen::Vector3d &lineOrigin, const Eigen::Vector3d &lineTangent, const double &lineTangentSquaredLength) const
compute the Point Curvilinear Coordinate of line
Definition GeometryUtilities.hpp:1083
double SimplexMeasure(const Eigen::MatrixXd &vertices) const
Definition GeometryUtilities.hpp:1688
std::vector< Eigen::MatrixXd > PolyhedronFaceEdgeTangents(const Eigen::MatrixXd &polyhedronVertices, const Eigen::MatrixXi &polyhedronEdges, const std::vector< Eigen::MatrixXi > &polyhedronFaces, const std::vector< std::vector< bool > > &polyhedronFaceEdgeDirections, const Eigen::MatrixXd &polyhedronEdgeTangents) const
Compute Polyhedron Faces Edge Tangents.
Definition GeometryUtilities_Polyhedron.cpp:409
static void Assert(const bool &logicResult)
Assert for all code, generate exception if something goes wrong.
Definition IOUtilities.hpp:126
Definition Eigen_Array.cpp:22
Definition GeometryUtilities.hpp:754
std::vector< std::vector< unsigned int > > AlignedEdgesEdges
Definition GeometryUtilities.hpp:756
std::vector< std::vector< unsigned int > > AlignedEdgesVertices
Definition GeometryUtilities.hpp:755
Definition GeometryUtilities.hpp:158
std::vector< std::vector< unsigned int > > InternalTriangles
Triangle formed with circle Center and new points.
Definition GeometryUtilities.hpp:161
Eigen::MatrixXd Points
Coordinates of generated points.
Definition GeometryUtilities.hpp:159
std::vector< std::vector< unsigned int > > SubTriangles
Triangle formed with sub-polygons and circle Center.
Definition GeometryUtilities.hpp:160
std::vector< std::vector< unsigned int > > SubPolygons
Subpolygon formed.
Definition GeometryUtilities.hpp:162
Definition GeometryUtilities.hpp:104
Types
Definition GeometryUtilities.hpp:106
double CurvilinearCoordinate
Valid only in IndexType Edge.
Definition GeometryUtilities.hpp:124
Gedim::GeometryUtilities::IntersectionPolygonCircleResult::Intersection::IndexTypes IndexType
Definition GeometryUtilities.hpp:121
IndexTypes
Definition GeometryUtilities.hpp:113
Gedim::GeometryUtilities::IntersectionPolygonCircleResult::Intersection::Types Type
Definition GeometryUtilities.hpp:119
unsigned int Index
Definition GeometryUtilities.hpp:123
Definition GeometryUtilities.hpp:102
std::vector< Gedim::GeometryUtilities::IntersectionPolygonCircleResult::Intersection > Intersections
Definition GeometryUtilities.hpp:127
Definition GeometryUtilities.hpp:469
Types
Definition GeometryUtilities.hpp:471
@ OnEdge
On polyhedron edge.
@ OnFace
On polyhedron face.
@ Inside
Inside polyhedron.
@ OnVertex
On polyhedron vertex.
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::LineIntersection::Types PolyhedronType
Definition GeometryUtilities.hpp:479
unsigned int PolyhedronIndex
vertex index)
Definition GeometryUtilities.hpp:483
double CurvilinearCoordinate
Curvilinear coordinate in the line.
Definition GeometryUtilities.hpp:485
Definition GeometryUtilities.hpp:441
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronEdgeIntersection::Types Type
Definition GeometryUtilities.hpp:449
unsigned int LineIntersectionIndex
Index of line intersection collection.
Definition GeometryUtilities.hpp:451
Types
Definition GeometryUtilities.hpp:443
Definition GeometryUtilities.hpp:427
unsigned int LineIntersectionIndex
Index of line intersection collection.
Definition GeometryUtilities.hpp:437
Types
Definition GeometryUtilities.hpp:429
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronFaceIntersection::Types Type
Definition GeometryUtilities.hpp:435
Definition GeometryUtilities.hpp:455
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronVertexIntersection::Types Type
Definition GeometryUtilities.hpp:463
unsigned int LineIntersectionIndex
Index of line intersection collection.
Definition GeometryUtilities.hpp:465
Types
Definition GeometryUtilities.hpp:457
Definition GeometryUtilities.hpp:416
Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::Types Type
Definition GeometryUtilities.hpp:488
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronEdgeIntersection > PolyhedronEdgeIntersections
size polyhedron num edges
Definition GeometryUtilities.hpp:494
Types
Definition GeometryUtilities.hpp:418
@ None
No intersection found.
@ TwoIntersections
Two intersection found.
@ OneIntersection
One intersection found.
@ MultipleIntersections
Multiple intersection found.
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronFaceIntersection > PolyhedronFaceIntersections
size polyhedron num faces
Definition GeometryUtilities.hpp:496
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::LineIntersection > LineIntersections
The line intersections.
Definition GeometryUtilities.hpp:490
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronLineResult::PolyhedronVertexIntersection > PolyhedronVertexIntersections
Definition GeometryUtilities.hpp:491
Definition GeometryUtilities.hpp:543
Gedim::GeometryUtilities::IntersectionSegmentPlaneResult Intersection
plane
Definition GeometryUtilities.hpp:544
Definition GeometryUtilities.hpp:530
Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::FaceIntersection::Types Type
Definition GeometryUtilities.hpp:538
Types
Definition GeometryUtilities.hpp:532
Definition GeometryUtilities.hpp:562
Types
Definition GeometryUtilities.hpp:564
Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::Intersection::Types Type
Definition GeometryUtilities.hpp:570
unsigned int EdgeId
Edge index of the Polyhedron.
Definition GeometryUtilities.hpp:572
unsigned int VertexId
Vertex index of the Polyhedron, available only if Type is Types::Vertex.
Definition GeometryUtilities.hpp:573
Definition GeometryUtilities.hpp:549
Types
Definition GeometryUtilities.hpp:551
Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::VertexIntersection::Types Type
Definition GeometryUtilities.hpp:557
Definition GeometryUtilities.hpp:518
unsigned int IntersectionId
Types::OnEdge and Types::OnFace.
Definition GeometryUtilities.hpp:578
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::EdgeIntersection > EdgeIntersections
Edge intersections.
Definition GeometryUtilities.hpp:581
Types
Definition GeometryUtilities.hpp:520
@ OnEdge
On polyhedron edge.
@ OnFace
On polyhedron face.
@ None
No intersection found.
@ NewPolygon
New polygon intersection.
@ OnVertex
On polyhedron vertex.
Eigen::MatrixXd IntersectionCoordinates
The resulting intersection coordinates.
Definition GeometryUtilities.hpp:584
Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::Types Type
The intersection type.
Definition GeometryUtilities.hpp:576
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::VertexIntersection > VertexIntersections
Vertex intersections.
Definition GeometryUtilities.hpp:580
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::Intersection > Intersections
The resulting intersections.
Definition GeometryUtilities.hpp:583
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronPlaneResult::FaceIntersection > FaceIntersections
Face intersections.
Definition GeometryUtilities.hpp:582
Definition GeometryUtilities.hpp:503
std::vector< unsigned int > Cell3DIndices
Definition GeometryUtilities.hpp:504
Definition GeometryUtilities.hpp:508
std::vector< unsigned int > Cell3DIndices
Definition GeometryUtilities.hpp:510
std::vector< double > Points
Definition GeometryUtilities.hpp:509
Definition GeometryUtilities.hpp:501
std::map< double, Gedim::GeometryUtilities::IntersectionPolyhedronsSegmentResult::IntersectionPoint > Points
Definition GeometryUtilities.hpp:513
std::vector< Gedim::GeometryUtilities::IntersectionPolyhedronsSegmentResult::IntersectionSegment > Segments
Definition GeometryUtilities.hpp:514
Definition GeometryUtilities.hpp:379
double CurvilinearCoordinate
Definition GeometryUtilities.hpp:381
Gedim::GeometryUtilities::PointSegmentPositionTypes Type
Definition GeometryUtilities.hpp:380
Definition GeometryUtilities.hpp:369
Types
Definition GeometryUtilities.hpp:371
Gedim::GeometryUtilities::IntersectionSegmentCircleResult::Types Type
Definition GeometryUtilities.hpp:384
std::vector< Gedim::GeometryUtilities::IntersectionSegmentCircleResult::IntersectionPosition > SegmentIntersections
intersections of the segment,
Definition GeometryUtilities.hpp:387
Definition GeometryUtilities.hpp:401
Gedim::GeometryUtilities::PointSegmentPositionTypes Type
Definition GeometryUtilities.hpp:402
double CurvilinearCoordinate
Definition GeometryUtilities.hpp:403
Definition GeometryUtilities.hpp:391
Gedim::GeometryUtilities::IntersectionSegmentPlaneResult::Intersection SingleIntersection
Definition GeometryUtilities.hpp:408
Types
Definition GeometryUtilities.hpp:393
Gedim::GeometryUtilities::IntersectionSegmentPlaneResult::Types Type
The intersection type.
Definition GeometryUtilities.hpp:406
Definition GeometryUtilities.hpp:345
Gedim::GeometryUtilities::PointSegmentPositionTypes Type
Definition GeometryUtilities.hpp:346
double CurvilinearCoordinate
Definition GeometryUtilities.hpp:347
Definition GeometryUtilities.hpp:327
IntersectionLineTypes
Definition GeometryUtilities.hpp:329
Gedim::GeometryUtilities::IntersectionSegmentSegmentResult::IntersectionSegmentTypes IntersectionSegmentsType
Definition GeometryUtilities.hpp:352
std::vector< Gedim::GeometryUtilities::IntersectionSegmentSegmentResult::IntersectionPosition > FirstSegmentIntersections
intersections of the first segment,
Definition GeometryUtilities.hpp:362
std::vector< unsigned int > SecondIntersectionRelation
Definition GeometryUtilities.hpp:359
IntersectionSegmentTypes
Definition GeometryUtilities.hpp:337
std::vector< Gedim::GeometryUtilities::IntersectionSegmentSegmentResult::IntersectionPosition > SecondSegmentIntersections
intersections of the second segment,
Definition GeometryUtilities.hpp:365
Gedim::GeometryUtilities::IntersectionSegmentSegmentResult::IntersectionLineTypes IntersectionLinesType
Definition GeometryUtilities.hpp:350
Definition GeometryUtilities.hpp:621
double CurvilinearCoordinate
Definition GeometryUtilities.hpp:634
Gedim::GeometryUtilities::LinePolygonPositionResult::EdgeIntersection::Types Type
Definition GeometryUtilities.hpp:631
Types
Definition GeometryUtilities.hpp:623
unsigned int Index
Definition GeometryUtilities.hpp:633
Definition GeometryUtilities.hpp:612
Gedim::GeometryUtilities::LinePolygonPositionResult::Types Type
Definition GeometryUtilities.hpp:638
std::vector< Gedim::GeometryUtilities::LinePolygonPositionResult::EdgeIntersection > EdgeIntersections
Definition GeometryUtilities.hpp:637
Types
Definition GeometryUtilities.hpp:614
Definition GeometryUtilities.hpp:781
std::array< std::vector< unsigned int >, 2 > OriginalToMergedEdges
Definition GeometryUtilities.hpp:784
Gedim::GeometryUtilities::Polyhedron MergedPolyhedron
Definition GeometryUtilities.hpp:789
static constexpr unsigned int none
Definition GeometryUtilities.hpp:782
std::array< std::vector< unsigned int >, 2 > OriginalToMergedFaces
Definition GeometryUtilities.hpp:785
std::vector< std::array< unsigned int, 2 > > MergedToOriginalVertices
Definition GeometryUtilities.hpp:786
std::array< std::vector< unsigned int >, 2 > OriginalToMergedVertices
Definition GeometryUtilities.hpp:783
std::vector< std::array< unsigned int, 2 > > MergedToOriginalEdges
Definition GeometryUtilities.hpp:787
std::vector< std::array< unsigned int, 2 > > MergedToOriginalFaces
Definition GeometryUtilities.hpp:788
Definition GeometryUtilities.hpp:596
Gedim::GeometryUtilities::PointPolygonPositionResult::Types Type
Definition GeometryUtilities.hpp:607
Types
Definition GeometryUtilities.hpp:598
unsigned int BorderIndex
index of vertex/edge of border
Definition GeometryUtilities.hpp:606
Definition GeometryUtilities.hpp:643
Gedim::GeometryUtilities::PointPolyhedronPositionResult::Types Type
Definition GeometryUtilities.hpp:656
unsigned int BorderIndex
index of vertex/edge/face of border
Definition GeometryUtilities.hpp:654
std::vector< unsigned int > Internal_indices
list of index of internal cell (usually tetrahedrons)
Definition GeometryUtilities.hpp:655
Types
Definition GeometryUtilities.hpp:645
Definition GeometryUtilities.hpp:134
Eigen::MatrixXd Points
Coordinates of generated points.
Definition GeometryUtilities.hpp:143
std::vector< std::vector< unsigned int > > SubPolygons
Subpolygon formed.
Definition GeometryUtilities.hpp:144
Types
Definition GeometryUtilities.hpp:136
std::vector< Gedim::GeometryUtilities::PolygonDivisionByAngleQuadrantResult::Types > SubPolygonTypes
types
Definition GeometryUtilities.hpp:145
Definition GeometryUtilities.hpp:150
std::vector< std::vector< unsigned int > > InternalTriangles
Triangle formed with circle Center and new points.
Definition GeometryUtilities.hpp:153
std::vector< std::vector< unsigned int > > SubPolygons
Subpolygon formed.
Definition GeometryUtilities.hpp:154
std::vector< std::vector< unsigned int > > SubTriangles
Triangle formed with sub-polygons and circle Center.
Definition GeometryUtilities.hpp:152
Eigen::MatrixXd Points
Coordinates of generated points.
Definition GeometryUtilities.hpp:151
Definition GeometryUtilities.hpp:677
Eigen::MatrixXd Vertices
vertices, size 3 x numVertices
Definition GeometryUtilities.hpp:678
Eigen::MatrixXi Edges
edges, size 2 x numEdges
Definition GeometryUtilities.hpp:679
std::vector< Eigen::MatrixXi > Faces
faces vertices and edges˝, size numFaces x 2 x numFaceVertices
Definition GeometryUtilities.hpp:680
Definition GeometryUtilities.hpp:661
unsigned int BorderIndex
index of edge/face of border
Definition GeometryUtilities.hpp:671
Types
Definition GeometryUtilities.hpp:663
Gedim::GeometryUtilities::SegmentPolyhedronPositionResult::Types Type
Definition GeometryUtilities.hpp:672
Definition GeometryUtilities.hpp:277
Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewEdge::Types Type
Definition GeometryUtilities.hpp:292
ArcTypes
Definition GeometryUtilities.hpp:286
unsigned int PolygonIndex
Index of Edge in polygon intersections.
Definition GeometryUtilities.hpp:298
std::vector< unsigned int > VertexIndices
Index of vertices in NewVertices.
Definition GeometryUtilities.hpp:297
Types
Definition GeometryUtilities.hpp:279
Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewEdge::ArcTypes ArcType
Type is Arc.
Definition GeometryUtilities.hpp:294
Definition GeometryUtilities.hpp:302
std::vector< unsigned int > Vertices
Definition GeometryUtilities.hpp:313
Types
Definition GeometryUtilities.hpp:304
Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewPolygon::Types Type
Definition GeometryUtilities.hpp:311
std::vector< unsigned int > Edges
Definition GeometryUtilities.hpp:314
Definition GeometryUtilities.hpp:261
Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewVertex::Types Type
Definition GeometryUtilities.hpp:270
Types
Definition GeometryUtilities.hpp:263
unsigned int IntersectionIndex
Index in circle intersections.
Definition GeometryUtilities.hpp:273
unsigned int PolygonIndex
Index in polygon vertices.
Definition GeometryUtilities.hpp:272
Definition GeometryUtilities.hpp:251
std::vector< unsigned int > CircleIntersectionsNewVerticesPosition
Definition GeometryUtilities.hpp:320
std::vector< Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewEdge > NewEdges
Definition GeometryUtilities.hpp:322
std::vector< Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewPolygon > NewPolygons
Definition GeometryUtilities.hpp:323
std::vector< Gedim::GeometryUtilities::SplitPolygonWithCircleResult::NewVertex > NewVertices
Definition GeometryUtilities.hpp:321
Types
Definition GeometryUtilities.hpp:253
std::vector< unsigned int > PolygonVerticesNewVerticesPosition
Definition GeometryUtilities.hpp:319
Gedim::GeometryUtilities::SplitPolygonWithCircleResult::Types Type
Definition GeometryUtilities.hpp:317
Definition GeometryUtilities.hpp:684
std::vector< unsigned int > PositiveVertices
Definition GeometryUtilities.hpp:694
std::vector< unsigned int > NegativeVertices
vertices indices of the positive sub-polygon
Definition GeometryUtilities.hpp:695
std::vector< Eigen::Vector3d > NewVertices
vertices indices of the points on plane
Definition GeometryUtilities.hpp:697
Gedim::GeometryUtilities::SplitPolygonWithPlaneResult::Types Type
new vertices edge indices
Definition GeometryUtilities.hpp:699
std::vector< unsigned int > PointsOnPlane
vertices indices of the negative sub-polygon
Definition GeometryUtilities.hpp:696
std::vector< unsigned int > NewVerticesEdgeIndex
new vertices coordinates
Definition GeometryUtilities.hpp:698
Types
Definition GeometryUtilities.hpp:686
Definition GeometryUtilities.hpp:221
unsigned int OriginId
Definition GeometryUtilities.hpp:232
Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewEdge::Types Type
Definition GeometryUtilities.hpp:229
unsigned int EndId
Definition GeometryUtilities.hpp:233
std::vector< unsigned int > Cell2DNeighbours
Definition GeometryUtilities.hpp:234
unsigned int OldEdgeId
Definition GeometryUtilities.hpp:231
Types
Definition GeometryUtilities.hpp:223
Definition GeometryUtilities.hpp:238
std::list< unsigned int > Edges
Definition GeometryUtilities.hpp:240
std::list< unsigned int > Vertices
Definition GeometryUtilities.hpp:239
Definition GeometryUtilities.hpp:208
Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewVertex::Types Type
Definition GeometryUtilities.hpp:216
Types
Definition GeometryUtilities.hpp:210
Definition GeometryUtilities.hpp:198
std::list< Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewVertex > NewVertices
Definition GeometryUtilities.hpp:245
Types
Definition GeometryUtilities.hpp:200
Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::Types Type
Definition GeometryUtilities.hpp:243
std::vector< Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewPolygon > NewPolygons
Definition GeometryUtilities.hpp:247
std::list< Gedim::GeometryUtilities::SplitPolygonWithSegmentResult::NewEdge > NewEdges
Definition GeometryUtilities.hpp:246
Definition GeometryUtilities.hpp:720
Eigen::MatrixXi Edges
all edges contained in the new polyhedra
Definition GeometryUtilities.hpp:721
std::vector< int > NewEdgesOriginalEdges
edge
Definition GeometryUtilities.hpp:722
std::vector< int > NewEdgesOriginalFace
located
Definition GeometryUtilities.hpp:724
Definition GeometryUtilities.hpp:729
std::vector< int > NewFacesOriginalFaces
face
Definition GeometryUtilities.hpp:731
std::vector< Eigen::MatrixXi > Faces
Definition GeometryUtilities.hpp:730
Definition GeometryUtilities.hpp:736
std::vector< unsigned int > Faces
Definition GeometryUtilities.hpp:739
std::vector< unsigned int > Vertices
Definition GeometryUtilities.hpp:737
std::vector< unsigned int > Edges
Definition GeometryUtilities.hpp:738
Definition GeometryUtilities.hpp:713
std::vector< unsigned int > NewVerticesOriginalEdge
to which is located
Definition GeometryUtilities.hpp:715
Eigen::MatrixXd Vertices
all vertices contained in the new polyhedra
Definition GeometryUtilities.hpp:714
Definition GeometryUtilities.hpp:704
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::NewFaces Faces
Definition GeometryUtilities.hpp:746
std::vector< std::vector< unsigned int > > OriginalFacesNewFaces
Definition GeometryUtilities.hpp:743
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::NewPolyhedron PositivePolyhedron
Definition GeometryUtilities.hpp:747
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::Types Type
Definition GeometryUtilities.hpp:749
Types
Definition GeometryUtilities.hpp:706
std::vector< std::vector< unsigned int > > OriginalEdgesNewEdges
Definition GeometryUtilities.hpp:742
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::NewEdges Edges
Definition GeometryUtilities.hpp:745
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::NewPolyhedron NegativePolyhedron
Definition GeometryUtilities.hpp:748
Gedim::GeometryUtilities::SplitPolyhedronWithPlaneResult::NewVertices Vertices
Definition GeometryUtilities.hpp:744
Definition GeometryUtilities.hpp:23
static constexpr double DefaultMinTolerance()
Definition GeometryUtilities.hpp:24
double Tolerance3D
Definition GeometryUtilities.hpp:32
double MinTolerance
Definition GeometryUtilities.hpp:29
double Tolerance2D
Definition GeometryUtilities.hpp:31
double Tolerance1D
Definition GeometryUtilities.hpp:30