Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#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 -®ЎкҐ¤ЁҐЁҐ ¤ўге Ў ©в ў б«®ў®
const nPar = 6;
const nMer = 11;
double Px[nPar][nMer], Py[nPar][nMer], Pz[nPar][nMer];
//§ ¤ Ґ¬ § 票п 㧫®ўле в®зҐЄ
void basePoint(double fi1, double fi2, double z1, double z2)
{
double fi, z, dfi=(fi2-fi1)/(nMer-1), dz=(z2-z1)/(nPar-1);
int i, j;
for(i=0; i<nMer; i++)
for(j=0; j<nPar; j++)
{
fi=fi1+dfi*i; z=z1+dz*j;
Pz[j][i]=z;
Py[j][i]=sqrt(z)*sin(M_PI/180.0*fi);
Px[j][i]=sqrt(z)*cos(M_PI/180.0*fi);
}
}
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));
}
void baseSurface(double fi1, double fi2, double z1, double z2)
{
//§ ¤ Ґ¬ § 票п 㧫®ўле в®зҐЄ
basePoint(fi1,fi2,z1,z2);
//Є®®а¤Ё вл Їа®ҐЄвЁа㥬®© в®зЄЁ
double xe, ye;
//Є®®а¤Ё вл ЇЁЄбҐ«®ў
int x1,y1,x2,y2;
setcolor(9);
int i,j;
for(i=0; i < nPar; i++)
for(j=0; j < nMer-1; j++)
{
xe=Xe(Px[i][j],Py[i][j]);
ye=Ye(Px[i][j],Py[i][j],Pz[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=Xe(Px[i][j+1],Py[i][j+1]);
ye=Ye(Px[i][j+1],Py[i][j+1],Pz[i][j+1]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
}
setcolor(13);
for(j=0; j<nMer; j++)
for(i=0; i<nPar-1; i++)
{
xe=Xe(Px[i][j],Py[i][j]);
ye=Ye(Px[i][j],Py[i][j],Pz[i][j]);
x1=pixelX(xe);
y1=pixelY(ye);
xe=Xe(Px[i+1][j],Py[i+1][j]);
ye=Ye(Px[i+1][j],Py[i+1][j],Pz[i+1][j]);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
}
}
void main()
{
int driver=DETECT;
int mode;
int res;
initgraph(&driver,&mode,"c:\\borlandc\\bgi");
if((res=graphresult())!=grOk)
{
printf("\nGraphics error: %s",grapherrormsg(res));
exit(1);
}
setbkcolor(15);
//¬ ЄбЁ¬ «млҐ ¤«Ёл ®бҐ© -¬Ёа®ўлҐ Є®®а¤Ё вл
double xmax=1.2, ymax=1.2, zmax=1.2;
//а §¬Ґал ўЁ¤®ў®Ј® ®Є ў Ї«®бЄ®бвЁ Їа®ҐЄвЁа®ў Ёп
double pixelxy=(double)getmaxy()/(double)getmaxx();
xe1=-2; xe2=2; ye1=-2*pixelxy; ye2=2*pixelxy;
double fi1, fi2, rad;
//Є®®а¤Ё вл Їа®ҐЄвЁа㥬®© в®зЄЁ
double xe, ye;
//Є®®а¤Ё вл ЇЁЄбҐ«®ў
int x1,y1,x2,y2;
fi=30, teta=60; // з «м®Ґ Ї®«®¦ҐЁҐ ўЁ¤®ў®© бЁбвҐ¬л Є®®а¤Ё в
lbl_1:
cleardevice();
char ss[20];
sprintf(ss,"fi= %4.0lf",fi);
outtextxy(550,50,ss);
sprintf(ss,"teta= %4.0lf",teta);
outtextxy(550,70,ss);
//ўлзЁб«ҐЁҐ бЁгб®ў Ё Є®бЁгб®ў ®аЁҐвЁа®ўЄЁ ўЁ¤®ў®© бЁбвҐ¬л Є®®а¤Ё в
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(12);
//®бм Ox
xe=Xe(0,0);
ye=Ye(0,0,0);
x1=pixelX(xe);
y1=pixelY(ye);
xe=Xe(xmax,0);
ye=Ye(xmax,0,0);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
outtextxy(x2,y2," X");
//®бм Oy
xe=Xe(0,0);
ye=Ye(0,0,0);
x1=pixelX(xe);
y1=pixelY(ye);
xe=Xe(0,ymax);
ye=Ye(0,ymax,0);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
outtextxy(x2,y2," Y");
//®бм Oz
xe=Xe(0,0);
ye=Ye(0,0,0);
x1=pixelX(xe);
y1=pixelY(ye);
xe=Xe(0,0);
ye=Ye(0,0,zmax);
x2=pixelX(xe);
y2=pixelY(ye);
line(x1,y1,x2,y2);
outtextxy(x2,y2," Z");
// setcolor(9);
//а §¬Ґал ®ЎкҐЄв ў Ї«®бЄ®бвЁ xy -¬Ёа®ўлҐ Є®®а¤Ё вл
fi1=0; fi2=90;
baseSurface(fi1,fi2,0.05,0.75);
fi1=120; fi2=210;
baseSurface(fi1,fi2,0.05,0.75);
while(!bioskey(1));
c.i=bioskey(0);
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; }
closegraph();
}
Соседние файлы в папке LABOR5