DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Розрахунково-графічна робота з курсу «Програмування комп’ютерної графіки»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Факультет комп’ютерних наук
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Розрахунково - графічна робота
Предмет:
Програмування комп’ютерної графіки
Група:
ЗІ-31
Коротко про документ

Про що ця робота

У роботі розроблено програми на мові C для побудови графіків функцій та реалізації рухомих анімованих об'єктів за допомогою бібліотеки OpenGL. Описано алгоритми побудови табличних графіків та симуляції відбиття кола від стінок вікна.

У роботі розглядаються

  • Комп'ютерна графіка
  • Мова програмування C
  • OpenGL
  • Побудова графіків
  • Анімація та рух об'єктів
  • Обробка подій
  • Геометричні перетворення

Зміст і розділи

  1. Мета роботи
  2. Завдання 1. Графік функції
  3. Текст програми 1
  4. Завдання 2. Рухоме зображення
  5. Текст програми 2
  6. Висновок
Для кого:Студенти технічних спеціальностей, викладачі та розробники, що вивчають комп'ютерну графіку.
Викладачі:Войтусик С. С.

Ключові поняття

OpenGLграфік функціївікноанімаціямова Cспіцікоординатитрансформаціярендеринг

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ Розрахунково-графічна робота з курсу «Програмування комп’ютерної графіки» Львів – 2011 Мета роботи - набути практичних навиків в складанні програм для побудови зображень на екрані комп’ютера за допомогою засобів мови С. Завдання 1 Побудувати графік функції заданої таблично. y=log(x) x [1;20] Текст програми #include<windows.h> #include<stdio.h> #include<GL/gl.h> #include<GL/glu.h> #include<GL/glaux.h> #include<math.h> #include<stdarg.h> void CALLBACK resize(intwidth,intheight) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } voidmath(double x[2],double t) { x[0]=0.5*log(t); x[1]=0.5*t; } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); double i, h=0.1; double k=0.4; double x[2]={0,0}; double y[2]={0,0}; glLineWidth(1); glBegin(GL_LINES); glColor3d(0,1,0); glVertex2f(0,-3.5); glVertex2f(0,3.5); glColor3d(0,1,0); glVertex2f(-3.5,0); glVertex2f(3.5,0); for(i=-6;i<7;i++) { glLineWidth(1); glBegin(GL_LINES); glColor3d(0,1,0); glVertex2f(i*k,0.2*k); glVertex2f(i*k,-0.2*k); glColor3d(0,1,0); glVertex2f(-0.2*k,i*k); glVertex2f(0.2*k,i*k); glEnd(); } for(i=1;i<8;i+=h) { math(x,i); glPointSize(2); glBegin(GL_POINTS); glColor3d(1,0,0); glVertex3d(x[0],x[1],0); glEnd(); } glDisable(GL_POINT_SMOOTH); // Відключення режиму згладжування для крапок auxSwapBuffers(); } voidmain() { floatpos[4] = {3,3,3,1}; floatdir[3] = {-1,-1,-1}; GLfloatmat_specular[] = {1,1,1,1}; auxInitPosition( 50, 10, 400, 400); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( "GlauxTemplate" ); auxIdleFunc(display); auxReshapeFunc(resize); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 128.0); auxMainLoop(display); } Результат роботи програми / Завдання 2 Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення: Коло зі спицями діаметром d рухається з лівого верхнього кута прямокутного вікна розмірами 180x160 по прямій лінії під кутом (до нижньої сторони вікна з одночасним обертанням спиць навколо центру кола. Потім коло продовжує рух по прямій лініях під кутом падіння, відбиваючись від інших сторін вікна.Параметри : (=45(,d=24  Текст програми #include<windows.h> #include <GL/gl.h> #include <GL/glu.h> #include <GL/glaux.h> #include <stdlib.h> #include <time.h> #define racket_w 2 #define racket_deltaracket_w/2 #define initial_vilocity 0.1 #define radius 0.5 double x, y; doubleracket_x=0; doublevx, vy; double right = 5, left = -5, top = 5, bottom = -5; void CALLBACK Key_LEFT(void ) { if(racket_x>left) racket_x -= racket_delta; } void CALLBACK Key_RIGHT(void ) { if(racket_x+racket_w<right) racket_x += racket_delta; } intCatched() { if(x>racket_x&& x<racket_x+racket_w) return 1; else return 0; } voidGetNextXY() { x += vx; y += vy; if(x-radius<left || x+radius>right) { vx = -vx; x += 2*vx; } if(y+radius>top || (y-radius<bottom &&Catched()) ) { vy = -vy; y += 2*vy; } } voidDrawBall() { glPushMatrix(); glTranslated(x,y,0); glColor3d(1,0,0); auxSolidSphere(radius); glPopMatrix(); } void CALLBACK display(void) { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); GetNextXY(); DrawBall(); if(y-radius<bottom) auxQuit(); auxSwapBuffers(); } void CALLBACK resize(intwidth,int height) { glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, 2,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); } void main() { floatpos[4] = {3,3,3,1}; floatdir[3] = {-1,-1,-1}; srand(time(0)); vx=initial_vilocity+((double)(rand()%50))/1000.0; vy=initial_vilocity+((double)(rand()%50))/1000.0; glEnable(GL_ALPHA_TEST); glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, dir); auxInitPosition( 50, 10, 400, 400); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); auxInitWindow( "Game --- Arcanoid" ); auxIdleFunc(display); auxReshapeFunc(resize); auxKeyFunc(AUX_LEFT, Key_LEFT); auxKeyFunc(AUX_RIGHT, Key_RIGHT); auxMainLoop(display); } Результат роботипрограми / / Висновок: на даній лабораторній роботі я набув практичних навиків в складанні програм для побудови зображень на екрані комп’ютера за допомогою засобів мови С.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!