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

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

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

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

Рік:
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:49

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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