Академический Документы
Профессиональный Документы
Культура Документы
ЛАБОРАТОРНА РОБОТА 3
з курсу «Компьютерная графика с OpenGL»
Харків – 2019
10 вариант
ЦЕЛЬ РАБОТЫ: изучить основные понятия и принципы преобразования
координат для построения двухмерного графика.
ЗАДАНИЕ
namespace glWinForm4
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
this.renderControl1.min = (double)this.xminUpDown.Value;
this.renderControl1.max = (double)this.xmaxUpDown.Value;
this.renderControl1.nPoints = (int)this.pointsUpDown.Value;
}
}
}
}
RenderControl.cs
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace glWinForm4
{
[ToolboxItem(true), ToolboxBitmap(typeof(RenderControl),
"RenderControl.bmp")]
public partial class RenderControl : OpenGL
{
private double xmax = 1;
private double xmin = 1;
private double ymin = -30;
private double ymax = 30;
private int points = 100;
private float WinWid = 60.0F;
private float WinHei = 60.0F;
private float devX;
private float devY;
double ScreenW, ScreenH;
return this.xmin;
}
set
{
this.xmin = value;
this.Invalidate();
}
}
functionCalculation();
glViewport(0, 0, Width, Height);
gluOrtho2D(xmin, xmax, ymin, ymax);
glColor(Color.Black);
glBegin(GL_LINES);
6
glVertex2d(0, ymin);
glVertex2d(0, ymax);
glVertex2d(xmin, 0);
glVertex2d(xmax, 0);
glEnd();
DrawDiagram();
return;
glColor(Color.Gray);
glLineWidth(0.1F);
glBegin(GL_LINES);
glEnd();
glMatrixMode(GL_MODELVIEW);
functionCalculation();
DrawDiagram();
Draw();
double y,x ;
GrapValuesArray = new double[nPoints, 2];
elements_count = 0;
double h = (xmax - xmin) / points;
double min;
double max;
min = max = (double)Math.Cos(xmin) /
((double)Math.Sqrt((double)Math.Sin(3 * xmin) + 1.01));
for (int i = 0; i< nPoints; i++)
{
x = xmin + i * h;
y = f(x);
GrapValuesArray[i, 0] = x;
GrapValuesArray[i, 1] = y;
if (min < y)
min = y;
if (max > y)
max = y;
}
7
ymin = min;
ymax = max;
glColor(Color.Red);
glPointSize(5);
glBegin(GL_POINTS);
for (int i = 1; i< nPoints-1; i ++) {
if( GrapValuesArray[i,1] * GrapValuesArray[i+1, 1]<=0){
double x0 =( GrapValuesArray[i, 0] + GrapValuesArray[i + 1,
0])/2;
double y0 =f(x0);
glVertex2d(x0, y0);
}
}
glEnd();
not_calculate = false;
functionCalculation();
glBegin(GL_LINE_STRIP);;
for(int i = 0; i< nPoints; i++)
{
glVertex2d(GrapValuesArray[i, 0], GrapValuesArray[i, 1]);
}
glEnd();
}
glColor(Color.Black);
glLineWidth(1.5F);
glBegin(GL_LINES);
glVertex2d(0, -15);
glVertex2d(0, 15);
glVertex2d(xmin, 0);
glVertex2d(xmax, 0);
glVertex2d(0, 15);
glVertex2d(0.1, 14.5);
glVertex2d(0, 15);
glVertex2d(-0.1, 14.5);
glVertex2d(15, 0);
glVertex2d(14.5, 0.1);
glVertex2d(15, 0);
8
glVertex2d(14.5, -0.1);
glEnd();
DrawDiagram();
glPopMatrix();
glColor3f(255, 0, 0);
glBegin(GL_LINES);
glVertex2d(lineX, 15);
glVertex2d(lineX, lineY);
glVertex2d(15, lineY);
glVertex2d(lineX, lineY);
glEnd();
glFlush();
Invalidate();
}
private void PointInGrap_Tick(object sender, EventArgs e)
{
if (pointPosition == elements_count - 1) pointPosition = 0;
Draw();
pointPosition++;
}
}
}
КОПИЯ ЭКРАНА РАБОТАЮЩЕЙ ПРОГРАММЫ
ТАБЛИЦА
СИСТЕМЫ ОЦЕНКИ С УКАЗАНИЕМ ВЫПОЛНЕННЫХ ЗАДАЧ
№ Сложность Требования Баллы
1 Базовый Оси координат и график функции f 1 (x) выводятся 1
уровень на заданном пользователем интервале от X min
до X max и от Y min до Y max
2 Автоматическое вычисление Y min и Y max на 2
заданном интервале от X min до X max функции f 1
(x)
3 Расчет и вывод на экран точек f 1 (x) = 0 2
ВЫВОД: В данной лабораторной работе изучил основные понятия и принципы
преобразования координат для построения двухмерного графика.