DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Квадрік-об'єкти. Камера

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

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

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

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Програмування комп’ютерної графіки
Група:
УІ-31

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ З В І Т до лабораторної роботи №5 з курсу «Програмування комп’ютерної графіки» на тему: «Квадрік-об'єкти. Камера» Виконав:ст. гр. УІ-31 Прийняла: Львів – 2011 Мета роботи. Дослідження можливостей моделювання графічних об'єктів з використанням квадрик-об'єктів бібліотеки OPENGL; установка і використання камери; дослідження і порівняльний аналіз результатів, отриманих при переміщенні камери і при переміщенні об'єкту. Варіант 1 Текст програми usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingTao.OpenGl; usingTao.FreeGlut; usingTao.Platform.Windows; namespaceGeometricTransformation { publicpartialclass Form1 : Form { public Form1() { InitializeComponent(); // инициализация для работы с openGL AnT.InitializeContexts(); } // вспомогательныепеременные - в них будутхранитсяобработанныезначения, // полученные при перетаскиванииползунковпользователем double a = 0, b = 0, c = -5, d = 0, zoom = 1; // выбранные оси int os_x = 1, os_y = 0, os_z = 0; // режим сеточнойвизуализации boolWire = false; privatevoidForm1_Load(object sender, EventArgs e) { // инициализациябибилиотекиglut Glut.glutInit(); // инициализациярежимаэкрана Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE); // установка цвета очистки экрана (RGBA) Gl.glClearColor(255, 255, 255, 1); // установка портавывода Gl.glViewport(0, 0, AnT.Width, AnT.Height); // активацияпроекционнойматрицы Gl.glMatrixMode(Gl.GL_PROJECTION); // очистка матрицы Gl.glLoadIdentity(); // установка перспективы Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200); Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); // начальная настройка параметровopenGL (тест глубины, освещение и первыйисточниксвета) Gl.glEnable(Gl.GL_DEPTH_TEST); Gl.glEnable(Gl.GL_LIGHTING); Gl.glEnable(Gl.GL_LIGHT0); // установка первыхэлементов в списках combobox comboBox1.SelectedIndex = 0; comboBox2.SelectedIndex = 0; // активация таймера, вызывающегофункцию для визуализации RenderTime.Start(); } // обрабатываемотклик таймера privatevoidRenderTimer_Tick(object sender, EventArgs e) { // вызываемфункциюотрисовкисцены Draw(); } // событиеизменениязначения privatevoidtrackBar1_Scroll(object sender, EventArgs e) { // переводимзначение, установившееся в элементеtrackBar в необходимый нам формат a = (double)trackBar1.Value / 1000.0; // подписываемэтозначение в labelэлементеподданнымползунком label4.Text = a.ToString(); } // событиеизменениязначения privatevoidtrackBar2_Scroll(object sender, EventArgs e) { // переводимзначение, установившееся в элементеtrackBar в необходимый нам формат b = (double)trackBar2.Value / 1000.0; // подписываемэтозначение в labelэлементеподданнымползунком label5.Text = b.ToString(); } // событиеизменениязначения privatevoidtrackBar3_Scroll(object sender, EventArgs e) { // переводимзначение, установившееся в элементеtrackBar в необходимый нам формат c = (double)trackBar3.Value / 1000.0; // подписываемэтозначение в labelэлементеподданнымползунком label6.Text = c.ToString(); } // событиеизменениязначения privatevoidtrackBar4_Scroll(object sender, EventArgs e) { // переводимзначение, установившееся в элементеtrackBar в необходимый нам формат d = (double)trackBar4.Value; // подписываемэтозначение в labelэлементеподданнымползунком label6.Text = d.ToString(); } // событиеизменениязначения privatevoidtrackBar5_Scroll(object sender, EventArgs e) { // переводимзначение, установившееся в элементеtrackBar в необходимый нам формат zoom = (double)trackBar5.Value / 1000.0; // подписываемэтозначение в labelэлементеподданнымползунком label6.Text = zoom.ToString(); } // изменениязначениячекбокса privatevoid checkBox1_CheckedChanged(objectsender, EventArgs e) { // еслиотмечен if (checkBox1.Checked) { // устанавливаемсеточный режим визуализации Wire = true; } else { // иначе - полигональнаявизуализация Wire = false; } } // изменение в элементахcomboBox privatevoid comboBox1_SelectedIndexChanged(objectsender, EventArgs e) { // в зависимости от выбранногорежима switch (comboBox1.SelectedIndex) { // устанавливаемнеобходимую ось (будетиспльзовано в функцииglRotate**) case 0: { os_x = 1; os_y = 0; os_z = 0; break; } case 1: { os_x = 0; os_y = 1; os_z = 0; break; } case 2: { os_x = 0; os_y = 0; os_z = 1; break; } } } // функцияотрисовки privatevoidDraw() { // очистка буфера цвета и буфера глубины Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glClearColor(255, 255, 255, 1); // очищениетекущейматрицы Gl.glLoadIdentity(); // помещаемсостояниематрицы в стек матриц , дальнейшиетрансформациизатронуттольковизуализациюобъекта Gl.glPushMatrix(); // производимперемещение, в зависимости от значений, полученных при перемещенииползунков Gl.glTranslated(a, b, c); // поворот по установленной оси Gl.glRotated(d, os_x, os_y, os_z); // и масштабированиеобъекта Gl.glScaled(zoom, zoom, zoom); // в зависимсоти от установленного типа объекта switch (comboBox2.SelectedIndex) { // рисуемнужныйобъект, используюфунциибибилиотеки GLUT case 0: { if (Wire) // еслиустановленсеточный режим визуализации Glut.glutWireSphere(2, 16, 16); // сеточная сфера else Glut.glutSolidSphere(2, 16, 16); // полигональная сфера break; } case 1: { if (Wire) // еслиустановленсеточный режим визуализации Glut.glutWireCylinder(1, 2, 32, 32); // цилиндр else Glut.glutSolidCylinder(1, 2, 32, 32); break; } case 2: { if (Wire) // еслиустановленсеточный режим визуализации Glut.glutWireCube(2); // куб else Glut.glutSolidCube(2); break; } case 3: { if (Wire) // еслиустановленсеточный режим визуализации Glut.glutWireCone(2, 3, 32, 32); // конус else Glut.glutSolidCone(2, 3, 32, 32); break; } case 4: { if (Wire) // еслиустановленсеточный режим визуализации Glut.glutWireTorus(0.2, 2.2, 32, 32); // тор else Glut.glutSolidTorus(0.2, 2.2, 32, 32); break; } } // возвращаемсостояниематрицы Gl.glPopMatrix(); // завершаемрисование Gl.glFlush(); // обновлемэлементAnT AnT.Invalidate(); } } } Результати виконання програми Висновок На даній лабораторній роботі я дослідив можливості моделювання графічних об'єктів з використанням квадрик-об'єктів бібліотеки OPENGL.
Антиботан аватар за замовчуванням

2015

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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