head 1.1; access; symbols; locks kyler:1.1; strict; comment @ * @; 1.1 date 2004.02.15.17.43.58; author kyler; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @#include typedef struct { double adfToGeoX[20]; double adfToGeoY[20]; double adfFromGeoX[20]; double adfFromGeoY[20]; int nOrder; int bReversed; } GCPTransformInfo; main() { int nGCPCount = 10; GDAL_GCP *pasGCPList[100]; GDAL_GCP *GCP; int nReqOrder = 1; int bReversed = 0; int i; GCPTransformInfo *psInfo; int CPL_DLL transformer; /* pasGCPList = malloc(sizeof(GDAL_GCP) * nGCPCount); */ for(i = 0; i < nGCPCount; i++) { GCP = (GDAL_GCP *)malloc(sizeof(GDAL_GCP)); pasGCPList[i] = GCP; GCP->pszId = malloc(10); sprintf(GCP->pszId, "%d", i); GCP->pszInfo = ""; GCP->dfGCPPixel = i; GCP->dfGCPLine = i; GCP->dfGCPX = i * 10; GCP->dfGCPY = i * 20; GCP->dfGCPZ = 0; printf("%s: (%lf, %lf) = (%lf, %lf, %lf)\n", GCP->pszId, GCP->dfGCPPixel, GCP->dfGCPLine, GCP->dfGCPX, GCP->dfGCPY, GCP->dfGCPZ ); } transformer = GDALCreateGCPTransformer ( nGCPCount, pasGCPList, nReqOrder, bReversed ); psInfo = (GCPTransformInfo *) transformer; printf("psInfo->nOrder=%d\n", psInfo->nOrder); printf("psInfo->bReversed=%d\n", psInfo->bReversed); for(i=0; i < 3; i++) { printf("from %d: %lf, %lf\n", i, psInfo->adfFromGeoX[i], psInfo->adfFromGeoY[i]); printf("to %d%lf, %lf\n", i, psInfo->adfToGeoX[i], psInfo->adfToGeoY[i]); } exit(0); for (i=0; i < 3; i++) { double x, y, X, Y; double e1, n1, e3, e2n, en2, n3, e2, en, n2; double *E; double *N; E = psInfo->adfToGeoX; N = psInfo->adfToGeoY; x = i; y = i; e1 = x; n1 = y; e2 = e1 * e1; en = e1 * n1; n2 = n1 * n1; e3 = e1 * e2; e2n = e2 * n1; en2 = e1 * n2; n3 = n1 * n2; X = N[0] + N[1] * e1 + N[2] * n1 + N[3] * e2 + N[4] * en + N[5] * n2 + N[6] * e3 + N[7] * e2n + N[8] * en2 + N[9] * n3; Y = E[0] + E[1] * e1 + E[2] * n1 + E[3] * e2 + E[4] * en + E[5] * n2 + E[6] * e3 + E[7] * e2n + E[8] * en2 + E[9] * n3; printf("(%lf, %lf) -> (%lf, %lf)\n", x, y, X, Y); } } @