/*################################################*/
/* ----- mg.c October , 2002, Wuhan ----- */
/* Window Version */
/*################################################*/
#include <windows.h>
#include <time.h>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
/**************************************************/
FILE *fl0, *fl1, *fl2, *fl3;
/*------------------------------------------------*/
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
/*------------------------------------------------*/
/* name of window class */
char szWinName[] = "MyWin";
char ch;
/*------------------------------------------------*/
/* holds output strings long x long y */
char str[255];
POINT vert[200];
/*------------------------------------------------*/
/* screen dimensions */
int maxX;
int maxY;
/*------------------------------------------------*/
HWND hwnd; /* Storage For Window Handle */
/*------------------------------------------------*/
/* handle of memory DC */
HDC memdc;
/*------------------------------------------------*/
/* handle of compatible bitmap */
HBITMAP hbit;
/*------------------------------------------------*/
/* handle of brushes */
HBRUSH hnewbrush;
HBRUSH hOldbrush;
HBRUSH hbrush[11];
/*------------------------------------------------*/
/* create pens handle of old pen */
HPEN hOldpen;
HPEN hpen[6];
/*------------------------------------------------*/
/* store the font handles */
HFONT holdf;
HFONT hnewf1;
HFONT hnewf2;
/*------------------------------------------------*/
HDC hdc;
PAINTSTRUCT paintstruct;
/**************************************************/
long **k0;
long **k1; /* k1[m00+1][3] */
long *k2; /* k2[k5+1] */
/*------------------------------------------------*/
long m[201];
/*------------------------------------------------*/
long i, i0, i1, i2, i3, i4, i8, i9;
long j, jo, jl;
long kk, k5;
long l, l0, l1;
long m00;
long n0, n1, n3, n5, n6, n7, n4, n8;
long o;
long p0, pe;
/*------------------------------------------------*/
long ix, iy, ic, iw;
/*------------------------------------------------*/
double **d;
double **g;
double **s;
double *x;
double *y;
double **h;
/*------------------------------------------------*/
double q0[501][3];
double q[3][3], p[3], w[14];
/*------------------------------------------------*/
double a0, a1, a3, a9;
double b1, b2;
double c1;
double d0, d1, dd;
double f1;
double r0, r1, r2;
double s0, s1, s2;
double v1;
double wr;
double w0, w1, w2, w3, w4, w5, w6, w7, w8;
double x0, x1, x2, x3, x7, x8, x9, x10;
double yo, yl, y2, y3, y7, y8, y9, y10;
/*------------------------------------------------*/
char cc;
char aa[255];
/**************************************************/
/* mg00: compute s sx sy sxx syy sxy */
/**************************************************/
void mg00()
{
ic = 1;
iw = 1;
/*------------------------------------------------*/
fl0 = fopen ("ff.c","r");
fscanf(fl0,"%s ",aa);
fclose(fl0);
/*------------------------------------------------*/
/* printf("enter graph data file \n ?"); */
/* scanf("%s",aa); */
fl0 = fopen ("data","w");
fl1 = fopen (aa, "r");
fprintf(fl0,"%d %d \n", maxX, maxY);
/*------------------------------------------------*/
fscanf(fl1,"%d %d %d %d %d",&n0,&n1,&n6,&o,&n5);
fscanf(fl1,"%d %d",&m00,&k5);
fscanf(fl1,"%lf %lf %lf %lf",&w1,&w2,&w3,&w4);
/*------------------------------------------------*/
n4=n0+1;
n8=3;
k0=(int **)malloc(sizeof(int *)*n4);
for(i=0; i<n4; ++i) k0[i]=(int *)malloc(sizeof(int)*n8);
x =(double *)malloc(sizeof(double)*n4);
y =(double *)malloc(sizeof(double)*n4);
/*------------------------------------------------*/
n4=n0+1;
n8=4;
s =(double **)malloc(sizeof(double *)*n4);
for(i=0; i<n4; ++i) s[i]=(double *)malloc(sizeof(double)*n8);
/*------------------------------------------------*/
n4=n0+1;
n8=7;
h =(double **)malloc(sizeof(double *)*n4);
for(i=0; i<n4; ++i) h[i]=(double *)malloc(sizeof(double)*n8);
/*------------------------------------------------*/
n4=o*(n5+2)+1;
n8=3;
d =(double **)malloc(sizeof(double *)*n4);
for(i=0; i<n4; ++i) d[i]=(double *)malloc(sizeof(double)*n8);
/*------------------------------------------------*/
n4=(n1+n6)*(n5+2)+1;
n8=6;
g =(double **)malloc(sizeof(double *)*n4);
for(i=0; i<n4; ++i) g[i]=(double *)malloc(sizeof(double)*n8);
/*------------------------------------------------*/
/*k1 k1[][1] start k1[][2] end of joint loop k2[] */
/* k2[][2]+1 is 1st vertex: k5 = k2[m00][2]+1 */
n4=m00+1;
n8=3;
k1= (int **)malloc(sizeof(int *)*n4);
for(i=0; i<n4; ++i) k1[i]=(int *)malloc(sizeof(int)*n8);
/*------------------------------------------------*/
/*k2 joint loop vertices - position number in d[] */
n4=k5+1;
k2 =(int *)malloc(sizeof(int)*n4);
/*------------------------------------------------*/
for (i=1; i<= n0; i++)
{
fscanf(fl1,"%d %d",&k0[i][1],&k0[i][2]);
} /* i */
/*------------------------------------------------*/
for (i=1; i<= n5+2; i++)
{
for (j=1; j<= o; j++)
{
fscanf(fl1,"%lf %lf",&d[(i-1)*o+j][1],&d[(i-1)*o+j][2]);
} /* j */
/*------------------------------------------------*/
for (j=1; j<= n1+n6; j++)
{
jl=(i-1)*(n1+n6)+j;
fscanf(fl1,"%lf %lf %lf %lf %lf"
,&g[jl][1],&g[jl][2],&g[jl][3],&g[jl][4],&g[jl][5]);
} /* j */
/*------------------------------------------------*/
if (i==1) goto a013;
fscanf(fl1,"%lf %lf",&q0[i-1][1],&q0[i-1][2]);
a013:;
} /* i */
/*------------------------------------------------*/
for (i=1; i<= n0; i++)
{
fscanf(fl1,"%lf %lf %lf",&s[i][1],&s[i][2],&s[i][3]);
} /* i */
/*------------------------------------------------*/
/* index of k2, [1] start [2] end */
for (i=1; i<= m00; i++)
{
fscanf(fl1,"%d %d", &k1[i][1],&k1[i][2]);
} /* i */
/*--------------------------------*/
/* vertices of joint loops */
for (i=1; i<= k5; i++)
{
fscanf(fl1,"%d",&k2[i]);
} /* i */
/*------------------------------------------------*/
fclose(fl1);
/**************************************************/
/* compute window limits */
w1 = d[1][1];
w2 = d[1][1];