51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
|
|
#ifndef CURVE_FITTING_H
|
|||
|
|
#define CURVE_FITTING_H
|
|||
|
|
|
|||
|
|
#include <vector>
|
|||
|
|
#include "VZNL_Types.h"
|
|||
|
|
|
|||
|
|
// 平面选择
|
|||
|
|
enum Plane
|
|||
|
|
{
|
|||
|
|
XY = 0,
|
|||
|
|
XZ = 1,
|
|||
|
|
YZ = 2
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 直线拟合结果
|
|||
|
|
struct LineFitResult
|
|||
|
|
{
|
|||
|
|
SVzNL3DPoint point; // 直线上的点
|
|||
|
|
SVzNL3DPoint direction; // 方向向量
|
|||
|
|
double error; // 拟合误差
|
|||
|
|
bool success; // 是否成功
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 抛物线拟合结果
|
|||
|
|
struct ParabolaFitResult
|
|||
|
|
{
|
|||
|
|
double a, b, c; // 抛物线系数
|
|||
|
|
double error; // 拟合误差
|
|||
|
|
bool success; // 是否成功
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 圆拟合结果
|
|||
|
|
struct CircleFitResult
|
|||
|
|
{
|
|||
|
|
SVzNL3DPoint center; // 圆心
|
|||
|
|
double radius; // 半径
|
|||
|
|
double error; // 拟合误差
|
|||
|
|
bool success; // 是否成功
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 直线拟合(3D)
|
|||
|
|
LineFitResult FitLine3D(const std::vector<SVzNL3DPosition>& points);
|
|||
|
|
|
|||
|
|
// 抛物线拟合
|
|||
|
|
ParabolaFitResult FitParabola(const std::vector<SVzNL3DPosition>& points, Plane plane);
|
|||
|
|
|
|||
|
|
// 圆拟合
|
|||
|
|
CircleFitResult FitCircle(const std::vector<SVzNL3DPosition>& points, Plane plane);
|
|||
|
|
|
|||
|
|
#endif // CURVE_FITTING_H
|