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

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

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

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

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

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

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

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

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

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

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

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

  • Комп'ютерна графіка
  • Моделювання об'єктів
  • OpenGL
  • Квадрік-об'єкти
  • Камера та візуалізація
  • Геометричні трансформації

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

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

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

OpenGLквадрик-об'єктикамеравізуалізаціясфератрансформаціяматрицяC#

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ З В І Т до лабораторної роботи №5 з курсу «Програмування комп’ютерної графіки» на тему: «Квадрік-об'єкти. Камера» Прийняла: Львів – 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.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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