fitting.h

来自「使用lm算法对二维圆数据进行拟和」· C头文件 代码 · 共 99 行

H
99
字号
/*
 *fitting.h
 */

#ifndef	_FITTING_H
#define	_FITTING_H

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>

typedef struct{
	int		rows;
	int		cols;
	double	**data;
}matrix_t;


struct circle_2dim_result{
	double	centre_x;
	double	centre_y;
	double	radius;
	double	eps;	
};

struct circle_3dim_result{
	double	centre_x;
	double	centre_y;
	double	centre_z;
	double	radius;
	double	eps;
};

struct sphere_result{
	double	centre_x;
	double	centre_y;
	double	centre_z;
	double	radius;
	double	eps;
};

struct cone_result{
	double	vertex_x;
	double	vertex_y;
	double	vertex_z;
	double	eps;
};

struct cylinder_result{
	double	radius;
	double	eps;
};

struct result{
	int type;

	union{
		struct circle_2dim_result	circle_2dim_res;
		struct circle_3dim_result	circle_3dim_res;
		struct sphere_result		sphere_res;
		struct cone_result			cone_res;
		struct cylinder_result		cylinder_res;
	}u;
};

#define TYPE_2D_CIRCLE			1
#define TYPE_3D_CIRCLE			2
#define TYPE_SPHERE				3
#define TYPE_CONE				4
#define TYPE_CYLINDER			5

struct data_set{
	int		count;
	double	*x;
	double	*y;
	double	*z;
};

struct fitting_target{
	int		type;				//geometry graphic type

	struct	data_set	data;

	struct	result		result;
};

#define INIT_FACTOR_VALUE	0.01
#define INCREMENT_FACTOR	2.0
#define DECREMENT_FACTOR	0.4
#define ITERATION_LIMIT		100
#define MIN_NUM				0.000001
#define MAX_GUESS_COUNT		20
#define CONVERGE_VALUE		0.0001

#define STEP_SEARCH			2  //for sphere


#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?