Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
//Ї®бв஥ЁҐ б®бв ў®© Ї®ўҐае®бвЁ ЃҐ§мҐ (ЄгЎЁзҐбЄЁ© бЇ« ©)
//ќв® п ў§п« Їа®Јг Љ®аҐҐў , Ј¤Ґ ® аЁб®ў « 1/8 Ї®ўҐае®бвЁ бдҐал (б¬. Їа®ЈЁ Љ®аҐҐў )
// Ё ᤥ« « ўбо бдҐаг
#include <conio.h>
#include <stdio.h>
#include <process.h>
#include <graphics.h>
#include <math.h>
#include <BIOS.h>
#include <DOS.h>
union inkey //§¤Ґбм еа Ёвбп Ёд®а¬ жЁп ® ¦ в®© Є« ўЁиҐ
{ //ch[0] -¬« ¤иЁ© Ў ©в, ch[1] -бв аиЁ© Ў ©в
char ch[2]; //ch[1] -Є®¤ бЄ Ёа®ў Ёп Є« ўЁиЁ
int i; //ch[0] -ASCII Є®¤
} c; //i -®ЎкҐ¤ЁҐЁҐ ¤ўге Ў ©в ў б«®ў®
double Px[4][4], Py[4][4], Pz[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px1[4][4], Py1[4][4], Pz1[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px2[4][4], Py2[4][4], Pz2[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px3[4][4], Py3[4][4], Pz3[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px4[4][4], Py4[4][4], Pz4[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px5[4][4], Py5[4][4], Pz5[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px6[4][4], Py6[4][4], Pz6[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
double Px7[4][4], Py7[4][4], Pz7[4][4]; //иҐбв ¤ж вм 㧫.в®зҐЄ Ї®ўҐае®бвЁ ЃҐ§мҐ
//дгЄжЁп ўлЎа ®© Ї®ўҐае®бвЁ
double functionZ(double x,double y)
{
return sqrt(1-x*x)*sqrt(1-y*y);
}
//§ ¤ Ґ¬ § 票п 㧫®ўле в®зҐЄ
void basePoint(double fi1, double fi2, double rad1, double rad2)
{
double fi, r, dfi=(fi2-fi1)/3, dr=(rad2-rad1)/3;
int i, j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
fi=fi1+dfi*i; r=rad1+dr*j;
Py[j][i]=r*sin(M_PI/180.0*fi);
Px[j][i]=r*cos(M_PI/180.0*fi);
}
for(j=0; j<4; j++)
for(i=0; i<4; i++)
{ if (j!=3)
Pz[j][i]=functionZ(Px[j][i],Py[j][i]);
else Pz[j][i]=0; }
}
void basePointMy()
{ int i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py1[j][i]=Py[j][i];
Px1[j][i]=Px[j][i];
Pz1[j][i]=(-Pz[j][i]);
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py2[j][i]=(-Py[j][i]);
Px2[j][i]=Px[j][i];
Pz2[j][i]=Pz[j][i];
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py3[j][i]=(-Py[j][i]);
Px3[j][i]=Px[j][i];
Pz3[j][i]=(-Pz[j][i]);
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py4[j][i]=(-Py[j][i]);
Px4[j][i]=(-Px[j][i]);
Pz4[j][i]=Pz[j][i];
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py5[j][i]=Py[j][i];
Px5[j][i]=(-Px[j][i]);
Pz5[j][i]=Pz[j][i];
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py6[j][i]=Py[j][i];
Px6[j][i]=(-Px[j][i]);
Pz6[j][i]=(-Pz[j][i]);
}
for(i=0; i<4; i++)
for(j=0; j<4; j++)
{
Py7[j][i]=(-Py[j][i]);
Px7[j][i]=(-Px[j][i]);
Pz7[j][i]=(-Pz[j][i]);
}
}
double fi,teta,sf,cf,st,ct;
//ЇҐаҐе®¤ ў ўЁ¤®ўго бЁб⥬㠪®®а¤Ё в Ё ®ав®Ја дЁзҐбЄ®Ґ Їа®ҐЄвЁа®ў ЁҐ
double Xe(double x,double y)
{
return -sf*x+cf*y;
}
//ЇҐаҐе®¤ ў ўЁ¤®ўго бЁб⥬㠪®®а¤Ё в Ё ®ав®Ја дЁзҐбЄ®Ґ Їа®ҐЄвЁа®ў ЁҐ
double Ye(double x,double y,double z)
{
return -ct*cf*x-ct*sf*y+st*z;
}
double xe1, xe2, ye1, ye2;
//ЇҐаҐў®¤ ўЁ¤®ўле Є®®а¤Ё в ў Є®®а¤Ё вл ЇЁЄбҐ«Ґ©
int pixelX(double xe)
{
return (int)(getmaxx()*(xe-xe1)/(xe2-xe1));
}
//ЇҐаҐў®¤ ўЁ¤®ўле Є®®а¤Ё в ў Є®®а¤Ё вл ЇЁЄбҐ«Ґ©
int pixelY(double ye)
{
return (int)(getmaxy()*(ye-ye2)/(ye1-ye2));
}
double Bezie(int i, double t) //зҐвлॠдгЄжЁЁ ЃҐ§мҐ (ЃҐаи⥩ )
{
double b;
switch(i)
{
case 0 : b=(1-t)*(1-t)*(1-t); break;
case 1 : b=3*t*(1-t)*(1-t); break;
case 2 : b=3*t*t*(1-t); break;
case 3 : b=t*t*t; break;
default : printf("\nError in function Bezie"); exit(1);
}
return b;
}
double splineX(double u,double v,int g)
{
double S1=0, S2;
int i,j;
if (g==0)
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
}
else
switch (g) {
case 1:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px1[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 2:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px2[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 3:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px3[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 4:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px4[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 5:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px5[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 6:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px6[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 7:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Px7[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
}
return S1;
}
double splineY(double u,double v,int g)
{
double S1=0, S2;
int i,j;
if (g==0)
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
}
else
switch (g) {
case 1:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py1[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 2:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py2[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 3:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py3[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 4:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py4[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 5:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py5[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 6:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py6[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 7:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Py7[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
}
return S1;
}
double splineZ(double u,double v,int g)
{
double S1=0, S2;
int i,j;
if (g==0)
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
}
else
switch (g) {
case 1:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz1[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 2:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz2[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 3:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz3[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 4:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz4[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 5:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz5[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 6:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz6[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
case 7:
for(i=0; i<4; i++)
{
S2=0;
for(j=0; j<4; j++)
S2 += Pz7[i][j]*Bezie(j,v);
S1 += S2*Bezie(i,u);
} break;
}
return S1;
}
int kl=1;
void baseSurface(double fi1, double fi2, double rad1, double rad2, double scale)
{
//§ ¤ Ґ¬ § 票п 㧫®ўле в®зҐЄ
basePoint(fi1,fi2,rad1,rad2);
basePointMy();
//Є®®а¤Ё вл Їа®ҐЄвЁа㥬®© в®зЄЁ
double xe, ye;
//Є®®а¤Ё вл ЇЁЄбҐ«®ў
int x1,y1,x2,y2;
int i,j;
if(kl==1)
{
for(i=0; i<4; i++)
for(j=0; j<3; j++)
{
//Ґ ¬®Ґ
xe=scale*Xe(Px[i][j],Py[i][j]);
ye=scale*Ye(Px[i][j],Py[i][j],Pz[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px[i][j+1],Py[i][j+1]);
ye=scale*Ye(Px[i][j+1],Py[i][j+1],Pz[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
//¬®Ґ
xe=scale*Xe(Px1[i][j],Py1[i][j]);
ye=scale*Ye(Px1[i][j],Py1[i][j],Pz1[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px1[i][j+1],Py1[i][j+1]);
ye=scale*Ye(Px1[i][j+1],Py1[i][j+1],Pz1[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px2[i][j],Py2[i][j]);
ye=scale*Ye(Px2[i][j],Py2[i][j],Pz2[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px2[i][j+1],Py2[i][j+1]);
ye=scale*Ye(Px2[i][j+1],Py2[i][j+1],Pz2[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px3[i][j],Py3[i][j]);
ye=scale*Ye(Px3[i][j],Py3[i][j],Pz3[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px3[i][j+1],Py3[i][j+1]);
ye=scale*Ye(Px3[i][j+1],Py3[i][j+1],Pz3[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px4[i][j],Py4[i][j]);
ye=scale*Ye(Px4[i][j],Py4[i][j],Pz4[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px4[i][j+1],Py4[i][j+1]);
ye=scale*Ye(Px4[i][j+1],Py4[i][j+1],Pz4[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px5[i][j],Py5[i][j]);
ye=scale*Ye(Px5[i][j],Py5[i][j],Pz5[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px5[i][j+1],Py5[i][j+1]);
ye=scale*Ye(Px5[i][j+1],Py5[i][j+1],Pz5[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px6[i][j],Py6[i][j]);
ye=scale*Ye(Px6[i][j],Py6[i][j],Pz6[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px6[i][j+1],Py6[i][j+1]);
ye=scale*Ye(Px6[i][j+1],Py6[i][j+1],Pz6[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px7[i][j],Py7[i][j]);
ye=scale*Ye(Px7[i][j],Py7[i][j],Pz7[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px7[i][j+1],Py7[i][j+1]);
ye=scale*Ye(Px7[i][j+1],Py7[i][j+1],Pz7[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
}
for(j=0; j<4; j++)
for(i=0; i<3; i++)
{
xe=scale*Xe(Px[i][j],Py[i][j]);
ye=scale*Ye(Px[i][j],Py[i][j],Pz[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px[i+1][j],Py[i+1][j]);
ye=scale*Ye(Px[i+1][j],Py[i+1][j],Pz[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
//¬®Ґ
xe=scale*Xe(Px1[i][j],Py1[i][j]);
ye=scale*Ye(Px1[i][j],Py1[i][j],Pz1[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px1[i+1][j],Py1[i+1][j]);
ye=scale*Ye(Px1[i+1][j],Py1[i+1][j],Pz1[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px2[i][j],Py2[i][j]);
ye=scale*Ye(Px2[i][j],Py2[i][j],Pz2[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px2[i+1][j],Py2[i+1][j]);
ye=scale*Ye(Px2[i+1][j],Py2[i+1][j],Pz2[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px3[i][j],Py3[i][j]);
ye=scale*Ye(Px3[i][j],Py3[i][j],Pz3[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px3[i+1][j],Py3[i+1][j]);
ye=scale*Ye(Px3[i+1][j],Py3[i+1][j],Pz3[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px4[i][j],Py4[i][j]);
ye=scale*Ye(Px4[i][j],Py4[i][j],Pz4[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px4[i+1][j],Py4[i+1][j]);
ye=scale*Ye(Px4[i+1][j],Py4[i+1][j],Pz4[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px5[i][j],Py5[i][j]);
ye=scale*Ye(Px5[i][j],Py5[i][j],Pz5[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px5[i+1][j],Py5[i+1][j]);
ye=scale*Ye(Px5[i+1][j],Py5[i+1][j],Pz5[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px6[i][j],Py6[i][j]);
ye=scale*Ye(Px6[i][j],Py6[i][j],Pz6[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px6[i+1][j],Py6[i+1][j]);
ye=scale*Ye(Px6[i+1][j],Py6[i+1][j],Pz6[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
xe=scale*Xe(Px7[i][j],Py7[i][j]);
ye=scale*Ye(Px7[i][j],Py7[i][j],Pz7[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=scale*Xe(Px7[i+1][j],Py7[i+1][j]);
ye=scale*Ye(Px7[i+1][j],Py7[i+1][j],Pz7[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
}
}
getchar();
int N=1000;
double u,v,du=1.0/N,dv=1.0/N;
for(int c=0;c<8;c++)
for(j=0; j<4; j++)
{
v=1.0/3.0*j;
for(i=0; i<N; i++)
{
u=du*i;
xe=scale*Xe(splineX(u,v,c),splineY(u,v,c));
ye=scale*Ye(splineX(u,v,c),splineY(u,v,c),splineZ(u,v,c));
x1=pixelX(xe);
y1=pixelY(ye);
putpixel(x1,y1,14);
}
}
getchar();
for(c=0;c<8;c++)
for(j=0; j<4; j++)
{
u=1.0/3.0*j;
for(i=0; i<N; i++)
{
v=dv*i;
xe=scale*Xe(splineX(u,v,c),splineY(u,v,c));
ye=scale*Ye(splineX(u,v,c),splineY(u,v,c),splineZ(u,v,c));
x1=pixelX(xe);
y1=pixelY(ye);
putpixel(x1,y1,12);
}
}
}
void main()
{
int driver=DETECT;
int mode;
int res;
initgraph(&driver,&mode,"c:\\mathemat\\borlandc\\bgi");
if((res=graphresult())!=grOk)
{
printf("\nGraphics error: %s",grapherrormsg(res));
exit(1);
}
//а §¬Ґал ўЁ¤®ў®Ј® ®Є ў Ї«®бЄ®бвЁ Їа®ҐЄвЁа®ў Ёп
double pixelxy=(double)getmaxy()/(double)getmaxx();
xe1=-2; xe2=2; ye1=-2*pixelxy; ye2=2*pixelxy;
// setgraphmode(1);
double fi1, fi2, rad1, rad2;
//Є®®а¤Ё вл Їа®ҐЄвЁа㥬®© в®зЄЁ
double xe, ye;
//Є®®а¤Ё вл ЇЁЄбҐ«®ў
int x1,y1,x2,y2;
fi=30, teta=60; // з «м®Ґ Ї®«®¦ҐЁҐ ўЁ¤®ў®© бЁбвҐ¬л Є®®а¤Ё в
double scale=1; //¬ҐпҐ¬ а §¬Ґал ®ЎкҐЄв ¬Ґпп Є®нддЁжЁҐв scale
lbl_1:
cleardevice();
//ўлзЁб«ҐЁҐ бЁгб®ў Ё Є®бЁгб®ў ®аЁҐвЁа®ўЄЁ ўЁ¤®ў®© бЁбвҐ¬л Є®®а¤Ё в
sf=sin(M_PI*fi/180);
cf=cos(M_PI*fi/180);
st=sin(M_PI*teta/180);
ct=cos(M_PI*teta/180);
setcolor(3);
//а §¬Ґал ®ЎкҐЄв ў Ї«®бЄ®бвЁ xy -¬Ёа®ўлҐ Є®®а¤Ё вл
fi1=0, fi2=90, rad1=0.1, rad2=1;
baseSurface(fi1,fi2,rad1,rad2,scale);
while(!bioskey(1)); //Їа®ўҐапҐв Ґбвм «Ё бЁ¬ў®« ў ЎгдҐаҐ ўў®¤
//дгЄжЁп Ґ ®бв® ў«Ёў Ґв Їа®Ја ¬¬г
c.i=bioskey(0); //ў®§ўа й Ґв Є®¤ ¦ в®© Є« ўЁиЁ (ЇаҐалў ЁҐ 0x14)
//Ё § ЇЁблў Ґв ў ®ЎкҐ¤ЁҐҐ б
//Ґб«Ё ЎгдҐа Їгбв, в® Їа®Ја ¬¬ ®бв ў«Ёў Ґвбп
if(c.ch[0]==0 && c.ch[1]==72) {teta += 5; goto lbl_1; }
if(c.ch[0]==0 && c.ch[1]==80) {teta -= 5; goto lbl_1; }
if(c.ch[0]==0 && c.ch[1]==75) {fi += 5; goto lbl_1; }
if(c.ch[0]==0 && c.ch[1]==77) {fi -= 5; goto lbl_1; }
if(c.ch[0]==117 && c.ch[1]==22) {scale += 0.1; goto lbl_1; }
if(c.ch[0]==100 && c.ch[1]==32) {scale -= 0.1; goto lbl_1; }
if(c.ch[0]==115 && c.ch[1]==31)
{ if(kl==0) kl=1;
else kl=0; goto lbl_1; }
// getch();
closegraph();
}