#ifndef DOXYGEN_SHOULD_SKIP_THIS
#define GCP_PRIVATE __attribute__ ((visibility("hidden")))
#endif
struct MATRIX
{
int n;
double *v;
};
#define M(row,col) m->v[(((row)-1)*(m->n))+(col)-1]
#define MSUCCESS 1
#define MNPTERR 0
#define MUNSOLVABLE -1
#define MMEMERR -2
#define MPARMERR -3
#define MINTERR -4
#define MAXORDER 3
#define GRASS_EPSILON 1.0e-15
struct Control_Points
{
int count;
double *e1;
double *n1;
double *e2;
double *n2;
int *status;
};
struct Control_Points_3D
{
int count;
double *e1;
double *n1;
double *z1;
double *e2;
double *n2;
double *z2;
int *status;
};
GCP_PRIVATE int
gcp_CRS_compute_georef_equations_3d (struct Control_Points_3D *,
double *, double *, double *,
double *, double *, double *, int);
GCP_PRIVATE int
gcp_I_compute_georef_equations (struct Control_Points *cp, double E12[],
double N12[], double E21[], double N21[],
int order);
GCP_PRIVATE int
gcp_I_compute_georef_equations_tps (struct Control_Points *cp,
double **E12tps, double **N12tps,
double **E21tps, double **N21tps);
GCP_PRIVATE int
gcp_I_georef (double e1, double n1, double *e, double *n, double E[],
double N[], int order);
GCP_PRIVATE int
gcp_CRS_georef_3d (double e1, double n1, double z1, double *e,
double *n, double *z, double E[], double N[],
double Z[], int order);
GCP_PRIVATE int
gcp_I_georef_tps (double e1, double n1, double *e, double *n, double *E,
double *N, struct Control_Points *cp, int fwd);