Побудова графіків функцій засобами мови С

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

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

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

Рік:
2011
Тип роботи:
Графіки
Предмет:
Програмування
Група:
УІ-31

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ З В І Т до лабораторної роботи №3 з курсу «Програмування комп’ютерної графіки» на тему: «Побудова графіків функцій засобами мови С#» Мета роботи. Набути практичних навиків в складанні програм для побудови графіків функцій за допомогою засобів мови С#. ЗАВДАННЯ Ознайомитися з методами побудови графіків функцій на екрані монітора комп’ютера. Вивчити основні процедури мови С# для виведення тексту в графічному режимі. Написати програму, яка будує в середині екрану систему координат XY і на ній графік функції Y=F(X), використовуючи графічні оператори мови С#, якщо аргумент або параметр змінюється на проміжку [a;b] з кроком h. N% Функція Інтервал Крок  4  x=[0;180] h=0.5   Текст програми 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 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; float lineX, lineY; float Mcoord_X = 0, Mcoord_Y = 0; public Form1() { InitializeComponent(); AnT.InitializeContexts(); } 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, AnT.Width, AnT.Height); Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); if ((float)AnT.Width <= (float)AnT.Height) { ScreenW = 30.0; ScreenH = 30.0 * (float)AnT.Height / (float)AnT.Width; Glu.gluOrtho2D(0.0, ScreenW, 0.0, ScreenH); } else { ScreenW = 30.0 * (float)AnT.Width / (float)AnT.Height; ScreenH = 30.0; Glu.gluOrtho2D(10.0, 80.0 * (float)AnT.Width / (float)AnT.Height, -25.0, 55.0); } devX = (float)ScreenW / (float)AnT.Width; devY = (float)ScreenH / (float)AnT.Height; Gl.glMatrixMode(Gl.GL_MODELVIEW); PointInGrap.Start(); } private void PointInGrap_Tick(object sender, EventArgs e) { if (pointPosition == elements_count - 1) pointPosition = 0; // переходимкначальномуэлементу Draw(); pointPosition++; } private void AnT_MouseMove(object sender, MouseEventArgs e) { Mcoord_X = e.X; Mcoord_Y = e.Y; lineX = devX * e.X; lineY = (float)(ScreenH - devY * e.Y); } private void PrintText2D(float x, float y, string text) { Gl.glRasterPos2f(x, y); foreach (char char_for_draw in text) { GLUT_BITMAP_9_BY_15. Glut.glutBitmapCharacter(Glut.GLUT_BITMAP_9_BY_15, char_for_draw); } } private void functionCalculation() { float x = 0, y = 0; GrapValuesArray = new float[400, 2]; elements_count = 0; for (x = 0; x < 180; x += 0.5f) { y = 20 * ((float)Math.Sin(x / 5) + (float)Math.Cos(2 * x)); GrapValuesArray[elements_count, 0] = x; GrapValuesArray[elements_count, 1] = y; elements_count++; } not_calculate = false; } private void DrawDiagram() { if (not_calculate) { functionCalculation(); } Gl.glBegin(Gl.GL_LINE_STRIP); 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.glPointSize(5); Gl.glColor3f(255, 0, 0); Gl.glBegin(Gl.GL_POINTS); Gl.glVertex2d(GrapValuesArray[pointPosition, 0], GrapValuesArray[pointPosition, 1]); Gl.glEnd(); Gl.glPointSize(1); } private void Draw() { Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glLoadIdentity(); Gl.glColor3f(0, 0, 0); Gl.glPushMatrix(); Gl.glTranslated(15, 15, 0); Gl.glBegin(Gl.GL_POINTS); for (int ax = -15; ax <80; ax++) { for (int bx = -45; bx <60; bx++) { Gl.glVertex2d(ax, bx); } } Gl.glEnd(); Gl.glBegin(Gl.GL_LINES); Gl.glVertex2d(0, -15); Gl.glVertex2d(0, 15); Gl.glVertex2d(-15, 0); Gl.glVertex2d(15, 0); Gl.glVertex2d(0, 15); Gl.glVertex2d(0.1, 14.5); Gl.glVertex2d(0, 15); Gl.glVertex2d(-0.1, 14.5); Gl.glVertex2d(15, 0); Gl.glVertex2d(14.5, 0.1); Gl.glVertex2d(15, 0); Gl.glVertex2d(14.5, -0.1); Gl.glEnd(); PrintText2D(15.5f, 0, "x"); PrintText2D(0.5f, 14.5f, "y"); DrawDiagram(); Gl.glPopMatrix(); PrintText2D(devX * Mcoord_X + 0.2f, (float)ScreenH - devY * Mcoord_Y + 0.4f, "[ x: " + (devX * Mcoord_X - 15).ToString() + " ; y: " + ((float)ScreenH - devY * Mcoord_Y - 15).ToString() + "]"); Gl.glColor3f(255, 0, 0); Gl.glBegin(Gl.GL_LINES); Gl.glVertex2d(lineX, 15); Gl.glVertex2d(lineX, lineY); Gl.glVertex2d(15, lineY); Gl.glVertex2d(lineX, lineY); Gl.glEnd(); Gl.glFlush(); AnT.Invalidate(); } } }с Результати виконання програми / Висновок На цій лабораторній роботі я набув практичних навиків в складанні програм для побудови графіків функцій за допомогою засобів мови С#.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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