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

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

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування комп’ютерної графіки
Група:
ЗІ-32

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА Кафедра Захист інформації З В І Т До лабораторної роботи №5 з курсу: „ Програмування комп’ютерної графіки ” на тему: „ Квадрік-об'єкти. Камера ” Львів – 2012 Мета роботи : дослідження можливостей моделювання графічних об'єктів з використанням квадрік-об'єктів бібліотеки OPENGL; установка і використання камери; дослідження і порівняльний аналіз результатів, отриманих при переміщенні камери і при переміщенні об'єкту. Варіант 1 Текст програми: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Tao.OpenGl; using Tao.FreeGlut; using Tao.Platform.Windows; namespace GeometricTransformation { public partial class 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; // режим сеточной визуализации bool Wire = false; private void Form1_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(); } // обрабатываем отклик таймера private void RenderTimer_Tick(object sender, EventArgs e) { // вызываем функцию отрисовки сцены Draw(); } // событие изменения значения private void trackBar1_Scroll(object sender, EventArgs e) { // переводим значение, установившееся в элементе trackBar в необходимый нам формат a = (double)trackBar1.Value / 1000.0; // подписываем это значение в label элементе под данным ползунком label4.Text = a.ToString(); } // событие изменения значения private void trackBar2_Scroll(object sender, EventArgs e) { // переводим значение, установившееся в элементе trackBar в необходимый нам формат b = (double)trackBar2.Value / 1000.0; // подписываем это значение в label элементе под данным ползунком label5.Text = b.ToString(); } // событие изменения значения private void trackBar3_Scroll(object sender, EventArgs e) { // переводим значение, установившееся в элементе trackBar в необходимый нам формат c = (double)trackBar3.Value / 1000.0; // подписываем это значение в label элементе под данным ползунком label6.Text = c.ToString(); } // событие изменения значения private void trackBar4_Scroll(object sender, EventArgs e) { // переводим значение, установившееся в элементе trackBar в необходимый нам формат d = (double)trackBar4.Value; // подписываем это значение в label элементе под данным ползунком label6.Text = d.ToString(); } // событие изменения значения private void trackBar5_Scroll(object sender, EventArgs e) { // переводим значение, установившееся в элементе trackBar в необходимый нам формат zoom = (double)trackBar5.Value / 1000.0; // подписываем это значение в label элементе под данным ползунком label6.Text = zoom.ToString(); } // изменения значения чекбокса private void checkBox1_CheckedChanged(object sender, EventArgs e) { // если отмечен if (checkBox1.Checked) { // устанавливаем сеточный режим визуализации Wire = true; } else { // иначе - полигональная визуализация Wire = false; } } // изменение в элементах comboBox private void comboBox1_SelectedIndexChanged(object sender, 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; } } } // функция отрисовки private void Draw() { // очистка буфера цвета и буфера глубины 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.
Антиботан аватар за замовчуванням

16.01.2013 12:21

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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