2026-02-01 14:51:16 +08:00

51 lines
1.1 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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