ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
CurveFitting.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // LOCAL
11 #include <Utils/PCLCloud.h>
12 #include <Utils/PCLConv.h>
13 
14 #include "qPCL.h"
15 
16 // CV_CORE_LIB
17 #include <CVConst.h>
18 #include <CVLog.h>
19 
20 #include <vector>
21 
22 class ccPolyline;
23 class ccPointCloud;
24 
25 namespace CurveFittingTool {
26 
28 public:
29  CurveFitting();
30  ~CurveFitting();
31 
32  static ccPolyline *BsplineFitting(const ccPointCloud &cloud);
33 
34  void setInputcloud(PointCloudT::Ptr input_cloud);
35  void grid_mean_xyz(double x_resolution,
36  double y_resolution,
37  std::vector<double> &x_mean,
38  std::vector<double> &y_mean,
39  std::vector<double> &z_mean,
40  PointCloudT::Ptr &new_cloud);
41  void line_fitting(std::vector<double> x,
42  std::vector<double> y,
43  double &k,
44  double &b); // y=kx+b
45  void polynomial2D_fitting(std::vector<double> x,
46  std::vector<double> y,
47  double &a,
48  double &b,
49  double &c); // y=a*x^2+b*x+c;
50  void polynomial3D_fitting(std::vector<double> x,
51  std::vector<double> y,
52  std::vector<double> z,
53  double &a,
54  double &b,
55  double &c); // z=a*(x^2+y^2)+b*sqrt(x^2+y^2)+c
56  void getPolynomial3D(PointCloudT::Ptr outCurve, double step_ = 0.5);
57 
58 private:
59  PointCloudT::Ptr cloud;
60  PointT point_min;
61  PointT point_max;
62  double a_3d;
63  double b_3d;
64  double c_3d;
65  double k_line;
66  double b_line;
67 };
68 } // namespace CurveFittingTool
pcl::PointXYZ PointT
Definition: PCLCloud.h:16
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
Colored polyline.
Definition: ecvPolyline.h:24
a[190]
normal_z y
normal_z x
normal_z z
#define QPCL_ENGINE_LIB_API
Definition: qPCL.h:15