Программаunit unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, OpenGL; type TGrahpik = class(TForm) Painting: TPaintBox; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure The_FormPaint (Sender: TObject); private public hrc: HGLRC; end; var Grahpik: TGrahpik; implementation {$R *.dfm} procedure SetDCPixelFormat(hdc: HDC); var pfd: TPixelFormatDescriptor; nPixelFormat: integer; begin FillChar (pfd, SizeOf(pfd), 0); nPixelFormat:=ChoosePixelFormat(hdc, @pfd); SetPixelFormat(hdc, nPixelFormat, @pfd); end; procedure TGrahpik.FormCreate(Sender: TObject); begin SetDCPixelFormat(Canvas.Handle); hrc:=wglCreateContext(Canvas.Handle); end; procedure TGrahpik.FormDestroy(Sender: TObject); begin wglDeleteContext(hrc); end; procedure TGrahpik.The_FormPaint (Sender: TObject); var x,yMax:Real; j:shortint; PoleY:word; y:Array[-100..100]Of Real; Begin wglMakeCurrent(Canvas.Handle, hrc); glClearColor(0.2, 0.5, 0.75, 1.0); glClear(GL_COLOR_BUFFER_BIT); glColor3d(1,1,1); glEnable(GL_LINE_STIPPLE); glLineStipple(1,$F00F); |
|||||||
7.160101.1381.02 |
Лист |
||||||
3 |
|||||||
Зм. |
Лист |
№ Докум |
Підпис |
Дата |
|||
glBegin(GL_LINES); For j:=-5to 5do Begin glVertex2f(j*0.2, 1); glVertex2f(j*0.2, -1); glVertex2f(1, j*0.2); glVertex2f(-1, j*0.2); End; glEnd; glDisable(GL_LINE_STIPPLE); glBegin(GL_LINES); glColor3d(0,0,0); glVertex2f(1, 0); glVertex2f(-1, 0); glVertex2f(0, 1); glVertex2f(0, -1); glEnd; glBegin(GL_LINE_STRIP); glVertex2f(0.96, 0.015); glVertex2f(1, 0); glVertex2f(0.96, -0.015); glEnd; glBegin(GL_LINE_STRIP); glVertex2f(0.015, 0.96); glVertex2f(0, 1); glVertex2f(-0.015, 0.96); glEnd; For j:=-100to 100do Begin y(.j.):=2*sqr(sin(j/100))/(j/100-3); If abs(y(.j.))>yMax then yMax:=y(.j.); End; yMax:=1/(int(yMax)+1); glColor3d(1,0,0); glEnable(GL_LINE_SMOOTH); glBegin(GL_LINE_STRIP); For j:=-100to 100do Begin glVertex2f(j/100, y(.j.)*yMax); End; glEnd; glDisable(GL_LINE_SMOOTH); wglMakeCurrent(0,0); End; End. Графическое изображение |
|||||||
7.160101.1381.02 |
Лист |
||||||
4 |
|||||||
Зм. |
Лист |
№ Докум |
Підпис |
Дата |
|||
Вывод Я научился на языке программирования “Delphi” применять для построения графического изображения библиотеку OpenGL и нарисовал в 2x мерной графики график функции на промежутке . Для изображения функции я применил ломаную, которую разбил на маленькие участки по 0.01, из-за чего получилась почти ровная линия. Т. к. я сначала проанализировал полученный массив на выход за пределы рамки, а затем умножал все значения ординат на такое число, которое позволило графику не выступать за свои пределы по оси ординат. |
|||||||
7.160101.1381.02 |
Лист |
||||||
5 |
|||||||
Зм. |
Лист |
№ Докум |
Підпис |
Дата |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.