Параметрична побудова графіків в залежності від осьової приналежності, шрифтів та типу лінії на екрані комп’ютера

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА Кафедра ЗІ З В І Т До лабораторної роботи №5 з курсу:«Програмування комп’ютерної графіки» на тему: «Параметрична побудова графіків в залежності від осьової приналежності, шрифтів та типу лінії на екрані комп’ютера» Варіант №9 Мета роботи: набути практичних навиків в складанні програм для побудови зображень в залежності від заданого типу осі,шрифту,кольору і типу лінії на екрані комп’ютера за допомогою засобів мови С# та бібліотеки OpenGL. Завдання: Побудувати графік функції (таблиця 1), заданої таблично. Графік повинен відображати результати розрахунків, які записані у файлі на диску. Масштаб розмітки осей координат графіка повинен відповідати реальним результатам розрахунків. Параметри для побудови графіка визначені в таблиці 2. Варіант завдання визначає викладач. Необхідно передбачити “плаваючий” центр координат – основну частину екрану мають займати ті чверті, в яких знаходиться графік функції. 9 y=arctg(x) [-50; 50]   № варіанту Тип лінії для побудови кривої графіка Товщина лінії (пікселів) Колір лінії Шрифт розмітки осей графіка  9  4 Cyan Small   Текст програми: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Tao.FreeGlut; using Tao.OpenGl; namespace WindowsFormsApplication1 { public partial class Form1 : Form { double ScreenW, ScreenH; private float devX; private float devY; private float[,] GrapValuesArray; private int elements_count = 0; private bool not_calculate = true; private int pointPosition = 0; public Form1() { InitializeComponent(); OnGl.InitializeContexts(); } private void OnGl_Load(object sender, EventArgs e) { } private void PointInGrap_Tick(object sender, EventArgs e) { if (pointPosition == elements_count - 1) pointPosition = 0; Draw(); pointPosition++; } private void Form1_Load(object sender, EventArgs e) { Glut.glutInit(); Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE); 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) { ScreenW = OnGl.Width; ScreenH = OnGl.Width * (float)OnGl.Height / (float)OnGl.Width; Glu.gluOrtho2D(0.0, ScreenW, 0.0, ScreenH); } else { ScreenW = OnGl.Height * (float)OnGl.Width / (float)OnGl.Height; ScreenH = OnGl.Height; Glu.gluOrtho2D(0.0, OnGl.Width * (float)OnGl.Width / (float)OnGl.Height, 0.0, OnGl.Height); } devX = (float)ScreenW / (float)OnGl.Width; devY = (float)ScreenH / (float)OnGl.Height; Gl.glMatrixMode(Gl.GL_MODELVIEW); PointInGrap.Start(); } private void PrintText2D(float x, float y, string text) { Gl.glRasterPos2f(x, y); foreach (char char_for_draw in text) { Glut.glutBitmapCharacter(Glut.GLUT_BITMAP_HELVETICA_12, char_for_draw); } } private void functionCalculation() { float x = 0, y = 0; GrapValuesArray = new float[30000, 2]; elements_count = 0; for (x = -500; x <= 500; x += 1.0f) { y = (float)Math.Abs(Math.Pow(x, 3)); GrapValuesArray[elements_count, 0] = x; GrapValuesArray[elements_count, 1] = y; elements_count++; } not_calculate = false; } private void DrawDiagram() { if (not_calculate) { functionCalculation(); } Gl.glColor3f(0.0f, 1.0f, 1.0f); Gl.glEnable(Gl.GL_LINE_STIPPLE); Gl.glLineWidth(4); Gl.glLineStipple(5, 0x1C47); Gl.glBegin(Gl.GL_LINE_STRIP); Gl.glEnable(Gl.GL_LINE_STIPPLE); Gl.glVertex2d(GrapValuesArray[0, 0], GrapValuesArray[0, 1]); for (int ax = 1; ax < elements_count; ax += 2) { Gl.glVertex2d(GrapValuesArray[ax, 0], GrapValuesArray[ax, 1]); } Gl.glEnd(); Gl.glDisable(Gl.GL_LINE_STIPPLE); } private void Draw() { int Width = OnGl.Width; int Height = OnGl.Height; float w = (float)(Width / 2); float h = (float)(Height / 2); float hg = (float)(Height - 15); float wx = (float)(w - 10); float wd = (float)(Width - 15); Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(0, 0, 0); Gl.glPushMatrix(); Gl.glTranslated(w, 0, 0); Gl.glLineWidth(2); Gl.glBegin(Gl.GL_LINES); Gl.glVertex2d(0, Height); Gl.glVertex2d(5, hg); Gl.glVertex2d(0, Height); Gl.glVertex2d(-5, hg); Gl.glVertex2d(w, 0); Gl.glVertex2d(wx, 5); Gl.glVertex2d(w, 0); Gl.glVertex2d(wx, -5); Gl.glVertex2d(0, OnGl.Height); Gl.glVertex2d(0, -OnGl.Height); Gl.glVertex2d(-OnGl.Width, 0); Gl.glVertex2d(OnGl.Width, 0); Gl.glEnd(); PrintText2D(wx, 10f, "x"); PrintText2D(10f, hg, "z"); Gl.glScalef(1.0f, 0.5f, 0.0f); DrawDiagram(); Gl.glPopMatrix(); Gl.glFlush(); OnGl.Invalidate(); } } } Результат виконання програми / Висновок: Під час виконання цієї лабораторної роботи, я набув практичних навиків в складанні програм для побудови зображень в залежності від заданого типу осі, шрифту, кольору і типу лінії на екрані комп’ютера за допомогою засобів мови С# та бібліотеки OpenGL.
Антиботан аватар за замовчуванням

19.12.2016 03:12-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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