Лабораторная работа на тему: Построить поверхность заданную уравнением
Кафедра ЭВМ
КОМПЬЮТЕРНАЯ ГРАФИКА
Лабораторная работа №6
КОМПЬЮТЕРНАЯ ГРАФИКА
Лабораторная работа №6
Задание:
Построить поверхность заданную уравнением: ***
Пусть ***
Текст программы:
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
#include<stdlib.h>
#define Eps 70
#define vEps 0.2
#define uEps 0.2
#define Dist 1100
#define W -100
#define H 200
#define CX 320
#define CY 240
#define AA 105
typedef long double ld;
struct TPoint{
ld x;
ld y;
ld z;
TPoint(ld X,ld Y,ld Z):x(X),y(Y),z(Z){}
TPoint() {}
};
void getxy(TPoint &P,int &xx,int &yy)
{
xx=CX+(int)(W+Dist*(P.y-W)/(P.x+Dist));
yy=CY-(int)(H+Dist*(P.z-H)/(P.x+Dist));
}
long double function(double x,double y)
{
x/=AA;
y/=AA;
ld tmp=5*pow(x,3)-3*pow(x,2)+x+4*pow(y,4);
return tmp;
}
void drawsurface(TPoint &P1,TPoint &P2,TPoint &P3,TPoint &P4,int Color)
{
TPoint BP,EP;
int x1,y1,x2,y2;
setcolor(Color);
for(long double u=0;u<1;u+=uEps)
for(long double v=0;v<1;v+=vEps)
{
BP.x=(1-u)*(1-v)*P1.x+u*(1-v)*P3.x+v*(1-u)*P2.x+u*v*P4.x;
BP.y=(1-u)*(1-v)*P1.y+u*(1-v)*P3.y+v*(1-u)*P2.y+u*v*P4.y;
BP.z=(1-u)*(1-v)*P1.z+u*(1-v)*P3.z+v*(1-u)*P2.z+u*v*P4.z;
u+=uEps;
v+=vEps;
EP.x=(1-u)*(1-v)*P1.x+u*(1-v)*P3.x+v*(1-u)*P2.x+u*v*P4.x;
EP.y=(1-u)*(1-v)*P1.y+u*(1-v)*P3.y+v*(1-u)*P2.y+u*v*P4.y;
EP.z=(1-u)*(1-v)*P1.z+u*(1-v)*P3.z+v*(1-u)*P2.z+u*v*P4.z;
u-=uEps;
v-=vEps;
getxy(BP,x1,y1);
getxy(EP,x2,y2);
line(x1,y1,x2,y2);
}
}
void main(void)
{
int drv=DETECT,mod,x,y,x1,y1;
TPoint P1,P2,P3,P4,Tmp1,Tmp2;
initgraph(&drv,&mod,\»\»);
cleardevice();
for(int i=-250-Eps/2;i<250;i+=Eps)
for(int j=-250-Eps/2;j<250;j+=Eps)
{
P1=TPoint(i,j,function(i,j));
P2=TPoint(i,j+Eps,function(i,j+Eps));
P3=TPoint(i+Eps,j,function(i+Eps,j));
P4=TPoint(i+Eps,j+Eps,function(i+Eps,j+Eps));
drawsurface(P1,P2,P3,P4,7);
drawsurface(P2,P1,P4,P3,7);
setcolor(15);
Tmp1=TPoint(i,j,function(i,j));
Tmp2=TPoint(i+Eps,j,function((i+Eps),j));
getxy(Tmp1,x,y);
getxy(Tmp2,x1,y1);
line(x,y,x1,y1);
Tmp1=TPoint(i,j+Eps,function(i,(j+Eps)));
getxy(Tmp1,x1,y1);
line(x,y,x1,y1);
}
getch();
closegraph();
}
Результат выполнения программы: рис…
Скачать полную версию можно по ссылке…
Скачать Построить поверхность заданную уравнением + 7 лаб. по ЭВМ