Главная » Информатика » Лабораторная работа на тему: Построить поверхность заданную уравнением

Лабораторная работа на тему: Построить поверхность заданную уравнением

Кафедра ЭВМ
КОМПЬЮТЕРНАЯ ГРАФИКА
Лабораторная работа №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 лаб. по ЭВМ

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

X

Pin It on Pinterest

X
Share This