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

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

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

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

Рік:
2011
Тип роботи:
Лабораторна робота
Предмет:
Програмування комп’ютерної графіки
Група:
УІ-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.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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