Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
CPolylines.hpp
Go to the documentation of this file.
1#ifndef LIBS_MATH_CPOLYLINES_HPP_
2#define LIBS_MATH_CPOLYLINES_HPP_
3
4#include "math/structs.hpp"
5
6#include <memory>
7#include <vector>
8
10{
11public:
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>>
15 createArcWithNumberPoints(double radius, double angleInitial, double angleEnd, uint64_t numPointsInArc);
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,
18 uint64_t numPoints);
19 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
20 createEllipseArc(double rx, double ry, double angleInitial, double angleEnd, double angleIncrement,
21 bool withLastAngle);
22 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
23 createEllipseArcWithNumberPointsInArc(double rx, double ry, double angleInitial, double angleEnd,
24 uint64_t numPointsInArc, bool withLastAngle);
25 static std::shared_ptr<std::vector<iv::math::geometry::Point3d>>
26 createPolyline2DTo3D(const std::vector<iv::math::geometry::Point2d> &polyline, double z);
27 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
28 createPolyline3DTo2DNoX(const std::vector<iv::math::geometry::Point3d> &polyline);
29 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
30 createPolyline3DTo2DNoZ(const std::shared_ptr<std::vector<iv::math::geometry::Point3d>> &polyline);
31 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>> createPolygonRegular(double radius,
32 uint64_t numEdges);
33 static std::vector<iv::math::geometry::Point3d> createRectangle3DCentredInOrigin(double width, double height,
34 double z);
35 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>> createRectangleCentredInOrigin(double width,
36 double height);
37
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,
45 double fy);
46
47 static double areaPolyline2D(const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline,
48 double precision);
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,
52 iv::types::coord *yMax);
53 static void calculateLimits2D(const std::vector<iv::math::geometry::Point2d> &polyline, iv::types::coord *xMin,
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>>
74 intersectionsLinePolyline(const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline, double x1Line,
75 double y1Line, double x2Line, double y2Line, double precision);
76 static std::vector<iv::math::geometry::Point2d>
77 intersectionsLinePolyline(const std::vector<iv::math::geometry::Point2d> &polyline, double x1Line, double y1Line,
78 double x2Line, double y2Line, double precision);
79 static std::shared_ptr<std::vector<iv::math::geometry::Point2d>>
80 intersectionsPolyline2DPlaneYZ(const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polyline, double x,
81 double A, double B, double C, double D, double precision);
82 static std::vector<iv::math::geometry::Point3d>
83 intersectionsPolyline3DPlane(const std::vector<iv::math::geometry::Point3d> &polyline, double A, double B, double C,
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,
87 double precision);
88 static void deletePointsRepeated3D(std::vector<iv::math::geometry::Point3d> &points, double precision);
89
90 static bool isClosedPolyline3d(const std::shared_ptr<std::vector<iv::math::geometry::Point3d>> &polyline,
91 double precision);
92 static bool isInnerPoint(const std::shared_ptr<std::vector<iv::math::geometry::Point2d>> &polygon, double x,
93 double y, double precision);
94};
95
96#endif /* LIBS_MATH_CPOLYLINES_HPP_ */
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