Главная » Информатика » КОМПЬЮТЕРНАЯ ГРАФИКА. Лабораторая работа: Построить эллипсоид, заданный уравнением

КОМПЬЮТЕРНАЯ ГРАФИКА. Лабораторая работа: Построить эллипсоид, заданный уравнением

Кафедра ЭВМ
КОМПЬЮТЕРНАЯ ГРАФИКА Лабораторная работа №2

КОМПЬЮТЕРНАЯ ГРАФИКА. Лабораторая работа: Построить эллипсоид, заданный уравнением

Кафедра ЭВМ

КОМПЬЮТЕРНАЯ ГРАФИКА

Лабораторная работа №2

Задание:
Построить эллипсоид, заданный уравнением:КОМПЬЮТЕРНАЯ ГРАФИКА. Лабораторая работа: Построить эллипсоид, заданный уравнением
Провести нормали.

Текст программы:

#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<math.h>
#include<stdlib.h>
#include <iostream.h>

#define Eps 30
#define Dist 1000
#define W 0
#define H 0

#define CX 320
#define CY 240

#define AA 300
#define BB 200
#define CC 100

typedef long double ld;

void getxy(ld x, ld y, ld z, ld &xx, ld &yy1, ld &yy2)

  {
     xx=CX+(W+Dist*(y-W)/(x+Dist));
    yy1=CY-(H+Dist*(z-H)/(x+Dist));
    yy2=CY+(H+Dist*(z-H)/(x+Dist));
  }

ld func(double x,double y)
  {
    long double tmp=CC*(200-pow(x,2)/AA-pow(y,2)/BB);
    return tmp<0?0:sqrt(tmp);
  }

void main(void)
  {
    ld x,y,x1,y1,y2,y_1,nx,ny,nz,l,XX=0,YY=0;
    int drv=DETECT,mod;
    initgraph(&drv,&mod,\"\");
    cleardevice();
    setcolor(8);

    for(int i=-250;i<250;i+=Eps)
      for(int j=-250;j<250;j+=Eps)
    {
      if(i>0) setcolor(8);
      else setcolor(7);

      getxy(i,j,func(i,j),x,y,y_1);
      getxy(i+Eps,j,func(i+Eps,j),x1,y1,y2);
      line(x,y,x1,y1);      // верт. линии верх. полусферы
      line(x,y_1,x1,y2);    // верт. линии ниж. полусферы

      getxy(i,j+Eps,func(i,j+Eps),x1,y1,y2);
      line(x,y,x1,y1);    // гориз. линии верх. полусферы
      line(x,y_1,x1,y2);  // гориз. линии ниж. полусферы
    }
   getch();
  setcolor(1);
for(XX=-250;XX<250;XX+=Eps)
for(YY=-250;YY<250;YY+=Eps)
{
    nx=2*XX/AA;
    ny=2*YY/BB;
    nz=2*func(XX,YY)/CC;
    l=sqrt(nx*nx+ny*ny+nz*nz)/50;
    nx/=l;
    ny/=l;
    nz/=l;
    getxy(XX,YY,func(XX,YY),x,y,y_1);
    getxy(nx+XX,ny+YY,nz+func(XX,YY),x1,y1,y2);
    line(x,y,x1,y1);
    line(x,y_1,x1,y2);
    putpixel(x,y,9);
    putpixel(x,y_1,9);
}
    getch();
    closegraph();
  }


Результат работы программы:

КОМПЬЮТЕРНАЯ ГРАФИКА. Лабораторая работа: Построить эллипсоид, заданный уравнением

Скачать полную версию можно по ссылке…
Скачать Лабораторая работа: Построить эллипсоид, заданный уравнением + еще 7 лабораторных по кафедре ЭВМ

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

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

Pin It on Pinterest