Побудова рухомих зображень

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ З В І Т До лабораторної роботи №6 з курсу: «Програмування комп’ютерної графіки» на тему: «Побудова рухомих зображень» Варіант №9 Мета роботи - набути практичних навиків в складанні програм для побудови зображень на екрані комп’ютера за допомогою засобів мови С# та бібліотеки OpenGL. Завдання: Створити на екрані комп’ютера графічне вікно і сформувати в ньому рухоме зображення. Вікно розмістити в верхньому правому куті екрану. Навести межі вікна. Параметри рухомого зображення визначені в таблиці 3. Параметри зображення задані в пікселах. Варіант завдання визначає викладач. Графік і вікно з рухомим зображенням повинні бути присутні на екрані одночасно, причому вікно не має перекривати графік (рис.1). № варіанту Структура зображення Пояснення   9   Замальований восьмикутник котиться по видимому круговому подібному контуру. Зміна центрів обертання в точці А. Діаметр вписаного у восьмикутник кола та відстань між колами становить a. Радіуси кіл становлять R. Кольори восьмикутника і контуру різні. Параметри : a=20, R=80   Текст програми: 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.FreeGlut; using Tao.OpenGl; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); OnGl.InitializeContexts(); } private void OnGl_Load(object sender, EventArgs e) { } private void Form1_Load(object sender, EventArgs e) { Glut.glutInit(); Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH); Gl.glClearColor(255, 255, 255, 1); Gl.glViewport(0, 0, OnGl.Width, OnGl.Height); Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); if ((float)OnGl.Width <= (float)OnGl.Height) { Glu.gluOrtho2D(0.0, 25.0 * (float)OnGl.Height / (float)OnGl.Width, 0.0, 25.0); } else { Glu.gluOrtho2D(0.0, 20.0 * (float)OnGl.Width / (float)OnGl.Height, 0.0, 20.0); } Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity(); } private void button1_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(0.3f, 0.5f, 0.3f); Gl.glBegin(Gl.GL_POINTS); Gl.glEnd(); Gl.glFlush(); OnGl.Invalidate(); Gl.glBegin(Gl.GL_POINTS); Gl.glEnd(); Gl.glEnable(Gl.GL_POINT_SMOOTH); Gl.glPointSize(4); Gl.glBegin(Gl.GL_POINTS); Gl.glVertex2d(5, 5); Gl.glVertex2d(5, 15); Gl.glVertex2d(15, 15); Gl.glVertex2d(15, 5); Gl.glEnd(); Gl.glDisable(Gl.GL_POINT_SMOOTH); } private void button3_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(0.6f, 0.3f, 0.2f); Gl.glEnable(Gl.GL_LINE_SMOOTH); Gl.glBegin(Gl.GL_LINE_LOOP); Gl.glEnd(); Gl.glFlush(); OnGl.Invalidate(); Gl.glBegin(Gl.GL_LINE_LOOP); Gl.glEnd(); Gl.glEnable(Gl.GL_LINE_STIPPLE); Gl.glLineWidth(3); Gl.glLineStipple(1, 58360); Gl.glBegin(Gl.GL_LINE_LOOP); Gl.glVertex2d(5, 5); Gl.glVertex2d(5, 15); Gl.glVertex2d(5, 15); Gl.glVertex2d(15, 15); Gl.glVertex2d(15, 15); Gl.glVertex2d(15, 5); Gl.glVertex2d(15, 5); Gl.glVertex2d(5, 5); Gl.glEnd(); Gl.glDisable(Gl.GL_LINE_STIPPLE); } private void button4_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(1.0f, 0.0f, 1.0f); Gl.glBegin(Gl.GL_LINES); Gl.glEnd(); Gl.glFlush(); OnGl.Invalidate(); Gl.glBegin(Gl.GL_LINES); Gl.glEnd(); Gl.glLineWidth(5); Gl.glBegin(Gl.GL_LINES); Gl.glVertex2d(1,1); Gl.glVertex2d(6,4); Gl.glVertex2d(6,4); Gl.glVertex2d(1,6); Gl.glVertex2d(1,6); Gl.glVertex2d(15,6); Gl.glVertex2d(15,6); Gl.glVertex2d(5,8); Gl.glVertex2d(5,8); Gl.glVertex2d(10,10); Gl.glVertex2d(10,10); Gl.glVertex2d(1,10); Gl.glEnd(); Gl.glDisable(Gl.GL_LINE_SMOOTH); } private void button5_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(0.0f, 1.0f, 0.0f); Gl.glEnable(Gl.GL_LINE_SMOOTH); Gl.glFlush(); OnGl.Invalidate(); Gl.glLineWidth(2); Gl.glBegin(Gl.GL_LINE_LOOP); Gl.glVertex2d(4.5, 3); Gl.glVertex2d(7.5, 12); Gl.glVertex2d(7.5, 12); Gl.glVertex2d(3, 15); Gl.glVertex2d(3, 15); Gl.glVertex2d(4.5, 18); Gl.glVertex2d(4.5, 18); Gl.glVertex2d(22.5, 18); Gl.glVertex2d(22.5, 18); Gl.glVertex2d(25.5, 13.5); Gl.glVertex2d(25.5, 13.5); Gl.glVertex2d(25.5,6); Gl.glVertex2d(25.5, 6); Gl.glVertex2d(22.5, 3); Gl.glVertex2d(22.5, 3); Gl.glVertex2d(14.5, 10.5); Gl.glVertex2d(14.5, 10.5); Gl.glVertex2d(4.5, 3); Gl.glEnd(); Gl.glDisable(Gl.GL_LINE_SMOOTH); } private void button6_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); OnGl.Invalidate(); Gl.glFlush(); Gl.glEnable(Gl.GL_POLYGON_SMOOTH); Gl.glLineWidth(3); Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL); Gl.glBegin(Gl.GL_TRIANGLES); Gl.glColor3f(0.2f, 0.6f, 0.4f); Gl.glVertex2d(14.5,10.5); Gl.glVertex2d(4.5,3); Gl.glVertex2d(7.5,12); Gl.glEnd(); Gl.glBegin(Gl.GL_TRIANGLE_STRIP); Gl.glColor3f(0.2f, 0.6f, 0.5f); Gl.glVertex2d(3, 15); Gl.glVertex2d(4.5, 18); Gl.glVertex2d(7.5, 12); Gl.glColor3f(1.0f, 1.0f, 0.7f); Gl.glVertex2d(22.5, 18); Gl.glColor3f(0.0f, 1.0f, 1.0f); Gl.glVertex2d(14.5, 10.5); Gl.glEnd(); Gl.glBegin(Gl.GL_TRIANGLE_FAN); Gl.glVertex2d(14.5, 10.5); Gl.glColor3f(0.0f, 1.0f, 1.0f); Gl.glVertex2d(22.5, 18); Gl.glColor3f(0.3f, 0.7f, 0.0f); Gl.glVertex2d(25.5, 13.5); Gl.glColor3f(0.8f, 1.0f, 0.5f); Gl.glVertex2d(25.5, 6); Gl.glColor3f(0.1f, 0.2f, 0.0f); Gl.glVertex2d(22.5, 3); Gl.glEnd(); Gl.glDisable(Gl.GL_POLYGON_SMOOTH); } private void button9_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); OnGl.Invalidate(); Gl.glBegin(Gl.GL_POLYGON); Gl.glEnable(Gl.GL_POLYGON_SMOOTH); Gl.glColor3f(1.0f, 0.6f, 0.0f); Gl.glVertex2d(20, 15); Gl.glVertex2d(20, 5.5); Gl.glVertex2d(9.5, 5.5); Gl.glVertex2d(9.5, 15); Gl.glEnd(); Gl.glDisable(Gl.GL_POLYGON_SMOOTH); } private void button10_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glShadeModel(Gl.GL_FLAT); OnGl.Invalidate(); Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL); Gl.glBegin(Gl.GL_QUAD_STRIP); Gl.glColor3f(0.0f, 1.0f, 0.0f); Gl.glVertex2d(3, 16.5); Gl.glVertex2d(6, 10.5); Gl.glVertex2d(21, 13.5); Gl.glVertex2d(15, 10.5); Gl.glColor3f(1.0f, 0.0f, 0.0f); Gl.glVertex2d(21, 3); Gl.glVertex2d(15, 4.5); Gl.glColor3f(1.0f, 0.0f, 0.1f); Gl.glVertex2d(13.5, 1.5); Gl.glVertex2d(12, 4.5); Gl.glColor3f(0.0f, 0.0f, 1.0f); Gl.glVertex2d(3, 1.5); Gl.glVertex2d(7.5, 7.5); Gl.glEnd(); Gl.glShadeModel(Gl.GL_SMOOTH); Gl.glEnd(); } private void button11_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL); Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_POINT); OnGl.Invalidate(); Gl.glBegin(Gl.GL_QUAD_STRIP); Gl.glColor3f(0.0f, 1.0f, 0.0f); Gl.glVertex2d(3, 16.5); Gl.glVertex2d(6, 10.5); Gl.glVertex2d(21, 13.5); Gl.glVertex2d(15, 10.5); Gl.glColor3f(1.0f, 0.0f, 0.0f); Gl.glVertex2d(21, 3); Gl.glVertex2d(15, 4.5); Gl.glColor3f(1.0f, 0.0f, 0.1f); Gl.glVertex2d(13.5, 1.5); Gl.glVertex2d(12, 4.5); Gl.glColor3f(0.0f, 0.0f, 1.0f); Gl.glVertex2d(3, 1.5); Gl.glVertex2d(7.5, 7.5); Gl.glEnd(); } private void button12_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_FILL); Gl.glPolygonMode(Gl.GL_BACK, Gl.GL_LINE); OnGl.Invalidate(); Gl.glBegin(Gl.GL_QUAD_STRIP); Gl.glColor3f(0.0f, 1.0f, 0.0f); Gl.glVertex2d(3, 16.5); Gl.glVertex2d(6, 10.5); Gl.glVertex2d(21, 13.5); Gl.glVertex2d(15, 10.5); Gl.glColor3f(1.0f, 0.0f, 0.0f); Gl.glVertex2d(21, 3); Gl.glVertex2d(15, 4.5); Gl.glColor3f(1.0f, 0.0f, 0.1f); Gl.glVertex2d(13.5, 1.5); Gl.glVertex2d(12, 4.5); Gl.glColor3f(0.0f, 0.0f, 1.0f); Gl.glVertex2d(3, 1.5); Gl.glVertex2d(7.5, 7.5); Gl.glEnd(); } private void button13_Click(object sender, EventArgs e) { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE); OnGl.Invalidate(); Gl.glBegin(Gl.GL_QUAD_STRIP); Gl.glColor3f(0.0f, 1.0f, 0.0f); Gl.glVertex2d(3, 16.5); Gl.glVertex2d(6, 10.5); Gl.glVertex2d(21, 13.5); Gl.glVertex2d(15, 10.5); Gl.glColor3f(1.0f, 0.0f, 0.0f); Gl.glVertex2d(21, 3); Gl.glVertex2d(15, 4.5); Gl.glColor3f(1.0f, 0.0f, 0.1f); Gl.glVertex2d(13.5, 1.5); Gl.glVertex2d(12, 4.5); Gl.glColor3f(0.0f, 0.0f, 1.0f); Gl.glVertex2d(3, 1.5); Gl.glVertex2d(7.5, 7.5); Gl.glEnd(); } private void Exit_Click_1(object sender, EventArgs e) { Application.Exit(); } } } Результат виконання програми / Висновок: На цій лабораторній роботі я навчився використовувати елементи бібліотеки OpenGl для побудови рухомих зображень.
Антиботан аватар за замовчуванням

19.12.2016 03:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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