Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / mbk / mbk_math.h
1 /******************************************************************************\
2
3 Bibliothèque de manipulation des objets mathématiques MBK.
4
5 \******************************************************************************/
6
7 // Définitions locales
8
9 typedef struct mbk_pwl_point {
10 struct mbk_pwl_point *PREV;
11 struct mbk_pwl_point *NEXT;
12 double X; // Point d'abscisse
13 double Y; // Ordonnée
14 double P; // Pente sur ce point
15 double O; // Origine de la pente
16 } mbk_pwl_point_list ;
17
18 #define LAPLACEDATA(pt,i) ((mbk_laplace_data*) ((pt)->DATA + i * (pt)->SIZE ))
19
20 mbk_pwl_point_list* mbk_pwl_alloc_point( void );
21 void mbk_pwl_free_point( mbk_pwl_point_list *pt );
22 void mbk_pwl_free_point_list( mbk_pwl_point_list *head );
23 void mbk_pwl_free_param_point_list( mbk_pwl_param_point_list *head );
24 mbk_pwl* mbk_pwl_alloc_pwl( int n );
25 char mbk_pwl_calc_deriv( char (*fn)(void*, double, double*),
26 void *data,
27 double x0,
28 double x1,
29 double *p
30 );
31 char mbk_pwl_fill_point( char (*fn)(void*, double, double*),
32 void *data,
33 double x,
34 double x1,
35 double x2,
36 mbk_pwl_point_list *point
37 );
38 int mbk_qsort_dbl_cmp( double *x1, double *x2 );
39 mbk_pwl* mbk_pwl_create_surface( char (*fn)(void*, double, double*),
40 void *data,
41 double x0,
42 double x1,
43 mbk_pwl_param *param
44 );
45 mbk_pwl* mbk_pwl_create_default( char (*fn)(void*, double, double*),
46 void *data,
47 double x0,
48 double x1,
49 mbk_pwl_param *param
50 );
51 mbk_laplace* mbk_alloc_laplace( int n, int size );
52 mbk_pwl* mbk_pwl_point_to_pwl( mbk_pwl_point_list *head );
53 mbk_pwl_point_list* mbk_pwl_param_point_to_point(
54 char (*fn)(void*, double, double* ),
55 void *data,
56 double x0,
57 double x1,
58 mbk_pwl_param *param
59 );
60 long mbk_long_round(double val);
61