1#ifndef LIBS_MATH_CPOLYLINES_HPP_
2#define LIBS_MATH_CPOLYLINES_HPP_
12 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
13 createArc(
double radius,
double angleInitial,
double angleEnd,
double angleIncrement,
bool withLastAngle);
14 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
16 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
createCircle(
double radius, uint64_t numPoints);
17 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
createEllipse(
double rx,
double ry,
19 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
20 createEllipseArc(
double rx,
double ry,
double angleInitial,
double angleEnd,
double angleIncrement,
22 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
24 uint64_t numPointsInArc,
bool withLastAngle);
25 static std::shared_ptr<std::vector<iv::math::geometry::Point3d>>
27 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
29 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
31 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
createPolygonRegular(
double radius,
38 static void centerGravity2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
39 double *xCenterGravity,
double *yCenterGravity);
40 static void move2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
double dx,
double dy);
41 static void move3D(std::vector<iv::math::geometry::Point3d> &polyline,
double dx,
double dy,
double dz);
42 static void rotate2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
double xc,
43 double yc,
double Ux,
double Uy);
44 static void scale2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
double fx,
47 static double areaPolyline2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
49 static double areaPolyline2D(
const std::vector<iv::math::geometry::Point2d> &polyline,
double precision);
50 static void calculateLimits2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
55 static void calculateLimits3D(
const std::shared_ptr<std::vector<iv::math::geometry::Point3d>> &polyline,
58 static void closePolyline2d(std::vector<iv::math::geometry::Point2d> &polylineOut);
59 static void closePolyline3d(
const std::shared_ptr<std::vector<iv::math::geometry::Point3d>> &polyline);
60 static std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point2d>>> *
62 const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &intersections2D,
63 const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &points2D);
64 static std::vector<std::shared_ptr<std::vector<iv::math::geometry::Point2d>>> *
66 const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &intersections2D,
67 const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &points2D);
68 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
69 getSubdivisionsCurve(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &separations,
70 uint64_t numDivisions);
71 static bool intersectionsLinePlane(
double x1,
double y1,
double z1,
double x2,
double y2,
double z2,
double A,
72 double B,
double C,
double D,
double *x,
double *y,
double *z,
double precision);
73 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
75 double y1Line,
double x2Line,
double y2Line,
double precision);
76 static std::vector<iv::math::geometry::Point2d>
78 double x2Line,
double y2Line,
double precision);
79 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
81 double A,
double B,
double C,
double D,
double precision);
82 static std::vector<iv::math::geometry::Point3d>
84 double D,
double precision);
85 static double lengthPolyline2D(
const std::vector<iv::math::geometry::Point2d> &polyline);
86 static void deletePointsRepeated2D(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &points,
90 static bool isClosedPolyline3d(
const std::shared_ptr<std::vector<iv::math::geometry::Point3d>> &polyline,
92 static bool isInnerPoint(
const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polygon,
double x,
93 double y,
double precision);
Definition CPolylines.hpp:10
static bool intersectionsLinePlane(double x1, double y1, double z1, double x2, double y2, double z2, double A, double B, double C, double D, double *x, double *y, double *z, double precision)
Definition CPolylines.cpp:1248
static void deletePointsRepeated3D(std::vector< iv::math::geometry::Point3d > &points, double precision)
Definition CPolylines.cpp:1520
static void move2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double dx, double dy)
Definition CPolylines.cpp:993
static std::vector< iv::math::geometry::Point3d > intersectionsPolyline3DPlane(const std::vector< iv::math::geometry::Point3d > &polyline, double A, double B, double C, double D, double precision)
Definition CPolylines.cpp:1376
static void deletePointsRepeated2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &points, double precision)
Definition CPolylines.cpp:1470
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createEllipseArc(double rx, double ry, double angleInitial, double angleEnd, double angleIncrement, bool withLastAngle)
Definition CPolylines.cpp:819
static void calculateLimits3D(const std::shared_ptr< std::vector< iv::math::geometry::Point3d > > &polyline, iv::types::coord *xMin, iv::types::coord *yMin, iv::types::coord *zMin, iv::types::coord *xMax, iv::types::coord *yMax, iv::types::coord *zMax)
Definition CPolylines.cpp:1123
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createEllipseArcWithNumberPointsInArc(double rx, double ry, double angleInitial, double angleEnd, uint64_t numPointsInArc, bool withLastAngle)
Definition CPolylines.cpp:826
static void centerGravity2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double *xCenterGravity, double *yCenterGravity)
Definition CPolylines.cpp:967
static std::vector< iv::math::geometry::Point3d > createRectangle3DCentredInOrigin(double width, double height, double z)
Definition CPolylines.cpp:925
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createEllipse(double rx, double ry, uint64_t numPoints)
Definition CPolylines.cpp:806
static std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point2d > > > * getPolylinesAreasOneSideIntersectionAbove(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &intersections2D, const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &points2D)
Definition CPolylines.cpp:1151
static std::shared_ptr< std::vector< iv::math::geometry::Point3d > > createPolyline2DTo3D(const std::vector< iv::math::geometry::Point2d > &polyline, double z)
Definition CPolylines.cpp:839
static void move3D(std::vector< iv::math::geometry::Point3d > &polyline, double dx, double dy, double dz)
Definition CPolylines.cpp:1002
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createPolygonRegular(double radius, uint64_t numEdges)
Definition CPolylines.cpp:893
static void closePolyline3d(const std::shared_ptr< std::vector< iv::math::geometry::Point3d > > &polyline)
Definition CPolylines.cpp:1145
static void scale2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double fx, double fy)
Definition CPolylines.cpp:1023
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createRectangleCentredInOrigin(double width, double height)
Definition CPolylines.cpp:946
static void rotate2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double xc, double yc, double Ux, double Uy)
Definition CPolylines.cpp:1012
static double areaPolyline2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double precision)
Definition CPolylines.cpp:1037
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createPolyline3DTo2DNoZ(const std::shared_ptr< std::vector< iv::math::geometry::Point3d > > &polyline)
Definition CPolylines.cpp:876
static bool isClosedPolyline3d(const std::shared_ptr< std::vector< iv::math::geometry::Point3d > > &polyline, double precision)
Definition CPolylines.cpp:1550
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createArc(double radius, double angleInitial, double angleEnd, double angleIncrement, bool withLastAngle)
Definition CPolylines.cpp:778
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createArcWithNumberPoints(double radius, double angleInitial, double angleEnd, uint64_t numPointsInArc)
Definition CPolylines.cpp:784
static void closePolyline2d(std::vector< iv::math::geometry::Point2d > &polylineOut)
Definition CPolylines.cpp:1140
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > intersectionsPolyline2DPlaneYZ(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double x, double A, double B, double C, double D, double precision)
Definition CPolylines.cpp:1339
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createPolyline3DTo2DNoX(const std::vector< iv::math::geometry::Point3d > &polyline)
Definition CPolylines.cpp:857
static std::vector< std::shared_ptr< std::vector< iv::math::geometry::Point2d > > > * getPolylinesAreasOneSideIntersectionUnder(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &intersections2D, const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &points2D)
Definition CPolylines.cpp:1187
static bool isInnerPoint(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polygon, double x, double y, double precision)
Definition CPolylines.cpp:1574
static double lengthPolyline2D(const std::vector< iv::math::geometry::Point2d > &polyline)
Definition CPolylines.cpp:1410
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > intersectionsLinePolyline(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, double x1Line, double y1Line, double x2Line, double y2Line, double precision)
Definition CPolylines.cpp:1265
static void calculateLimits2D(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &polyline, iv::types::coord *xMin, iv::types::coord *yMin, iv::types::coord *xMax, iv::types::coord *yMax)
Definition CPolylines.cpp:1094
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > createCircle(double radius, uint64_t numPoints)
Definition CPolylines.cpp:795
static std::shared_ptr< std::vector< iv::math::geometry::Point2d > > getSubdivisionsCurve(const std::shared_ptr< std::vector< iv::math::geometry::Point2d > > &separations, uint64_t numDivisions)
Definition CPolylines.cpp:1225
double coord
Definition types.hpp:13