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

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

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

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

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

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

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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