
Лаборатоные 2 семестр (паскаль) / 3d модуль PABC.NET / Модуль LGraph3dABC руководство пользователя
.docx
Модуль Lgraph3dABC
Руководство пользователя
Описание модуля
Данный модуль надстройка в PascalABC .NET предназначен для упрощения построения 3D графиков. В модуле есть пять процедур для построения графиков. Ниже приводится подробное описание всех процедур и пример программы
Для использования модуля в программе необходимо :
-
Модуль должен находиться в одной папке с программой.
-
Подключить его в разделе uses. Также для передачи цветов необходимо подключить встроенный модуль GraphABC. Пример:
uses LGraph3dABC,GraphABC;
Процедура drawOXY
Данная процедура выводит оси графика на экран.
drawXYZ(startX,endX,startY,endY,startZ,endZ:real;Height,Width,indent:integer; var flag:string);Все процедуры модуля можно вызывать только после выполнения процедуры drawXYZ.
Описание переменных:
-
startX – координата начала оси X
-
endX – координата конца оси X
-
startY – координата начала оси Y
-
endY – координата конца оси Y
-
startZ – координата конца оси Z
-
endZ – координата конца оси Z
-
Height – высота окна
-
Width – ширина окна
-
Indent – отступы
-
Flag – служебный строковый параметр
Пример работы процедуры с параметрами drawXYZ(-10,10,-10,10,0,100,400,600,40,flag);
Процедура drawPoint()
Данная процедура выводит точку функции f(x,y,z)на графике цвет зависит от величины Z.Вызывается только после drawXYZ().
drawPoint(flag:string; x,y,z:real);
Описание переменных:
-
flag – служебная переменная
-
x – координата точки X
-
y –координата точки Y
-
z – координата точки Z
Пример работы процедуры с параметрами
drawPoint(flag,x1,y1,50);
hx:=20/100; //шаг по оси X
hy:=20/100; //шаг по оси Y
for i:=1 to 100 do
begin
x1:=-10+i*hx;
for j:=1 to 100 do
begin
y1:=-10+j*hy;
drawPoint(flag,x1,y1,50);
end;
end;
Процедура drawPointColor()
Данная процедура выводит точку на графике графика.Вызывается только после drawXYZ().
drawPoint(flag:string; x,y,z:real:clr:color);
Описание переменных:
-
flag – служебная переменная
-
x – координата точки X
-
y –координата точки Y
-
z – координата точки Z
-
clr – цвет точки
Пример работы процедуры с параметрами
drawPoint(flag,x1,y1,50,clBlack);
hx:=20/100; //шаг по оси X
hy:=20/100; //шаг по оси Y
for i:=1 to 100 do
begin
x1:=-10+i*hx;
for j:=1 to 100 do
begin
y1:=-10+j*hy;
drawPoint(flag,x1,y1,50,clBlack);
end;
end;
Процедура drawPolygone()
Данная процедура выводит линию на графике.Вызывается только после drawXYZ(). Цвет меняется автоматически.
drawPolygone(flag:string;x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4:real);Описание переменных:
-
flag – служебная переменная
-
x1 – координата точки X1
-
y1 –координата точки Y1
-
z1 – координата точки Z1
-
x2 – координата точки X2
-
y2 –координата точки Y2
-
z2 – координата точки Z2
-
x3 – координата точки X3
-
y3 –координата точки Y3
-
z3 – координата точки Z3
-
x4 – координата точки X4
-
y4 –координата точки Y4
-
z4 – координата точки Z4
Пример работы процедуры
В данном примере x и y не зависят друг от друга и меняются равномерно по плоскости ниже представлен вид на точки функции сверху, поэтому достаточно для построения одного полигона знать x1
x2 y1 y2, так как x и y будут пробегать по плоскости
Ниже представлена работа процедуры с параметрами
drawPolygone(flag,x1,y1,z(x1,y1),x2,y1,z(x2,y1),x1,y2,z(x1,y2),x2,y2,z(x2,y2));
hx:=20/100; //шаг по оси X
hy:=20/100; //шаг по оси Y
for i:=1 to 100 do
begin
x1:=-10+(i-1)*hx; //x1
x2:=-10+i*hx; //x2
y1:=0;
y2:=0;
for j:=1 to 100 do
begin
y1:=-10+(j-1)*hy; //y1
y2:=-10+j*hy; //y2
drawPolygone(flag,x1,y1,z(x1,y1),x2,y1,z(x2,y1),x1,y2,z(x1,y2),x2,y2,z(x2,y2));
end;
end;
Процедура
drawPolygoneColorLine()
Данная процедура выводит полигон с заданным цветом на графике.Вызывается только после drawXYZ().
drawPolygoneColorLine(flag:string;x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4:real;clr:color);
Описание переменных:
-
flag – служебная переменная
-
x1 – координата точки X1
-
y1 –координата точки Y1
-
z1 – координата точки Z1
-
x2 – координата точки X2
-
y2 –координата точки Y2
-
z2 – координата точки Z2
-
x3 – координата точки X3
-
y3 –координата точки Y3
-
z3 – координата точки Z3
-
x4 – координата точки X4
-
y4 –координата точки Y4
-
z4 – координата точки Z4
-
clr – цвет полигона
Пример работы процедуры
В данном примере x и y не зависят друг от друга и меняются равномерно по плоскости ниже представлен вид на точки функции сверху, поэтому достаточно для построения одного полигона знать x1
x2 y1 y2, так как x и y будут пробегать по плоскости
Ниже представлена работа процедуры с параметрами
drawPolygoneColorLine(flag,x1,y1,z(x1,y1),x2,y1,z(x2,y1),x1,y2,z(x1,y2),x2,y2,z(x2,y2));
hx:=20/100; //шаг по оси X
hy:=20/100; //шаг по оси Y
for i:=1 to 100 do
begin
x1:=-10+(i-1)*hx; //x1
x2:=-10+i*hx; //x2
y1:=0;
y2:=0;
for j:=1 to 100 do
begin
y1:=-10+(j-1)*hy; //y1
y2:=-10+j*hy; //y2
drawPolygoneColorLine(flag,x1,y1,z(x1,y1),x2,y1,z(x2,y1),x1,y2,z(x1,y2),x2,y2,z(x2,y2),clBlack);
end;
end;
Пример программы с комментариями
uses LGraph3dABC,GraphAbc;
var flag:string;
i,j:integer;
hx,hy,x1,y1,x2,y2:real;
function z(x,y:real):real;
begin
z:=x*x/(2)+y*y/(2);
end;
begin
//создание осей
//-10 10 (первая пара) начало и конец оси X
//-10 10 (вторая пара) начало и конец оси Y
//0 100 начало и конец оси Z
//400 600 высота и ширина экрана на котором будет выводиться график
//40 отступы от краев экрана
//flag служебная переменная необходимая для дальнейшего построения графиков
drawXYZ(-10,10,-10,10,0,100,400,600,40,flag);
hx:=20/100; //шаг по оси X
hy:=20/100; //шаг по оси Y
for i:=1 to 100 do
begin
x1:=-10+(i-1)*hx; //x1
x2:=-10+i*hx; //x2
y1:=0;
y2:=0;
for j:=1 to 100 do
begin
y1:=-10+(j-1)*hy; //y1
y2:=-10+j*hy; //y2
//Вывод полигона
//flag служебная переменная
//x1,y1,z(x1,y1) - первая точка
//x2,y1,z(x2,y1) - вторая точка
//x1,y2,z(x1,y2) - третья точка
//x1,y2,z(x1,y2) - четвертая точка точка
drawPolygone(flag,x1,y1,z(x1,y1),x2,y1,z(x2,y1),x1,y2,z(x1,y2),x2,y2,z(x2,y2));
//построение точек плоскости
//x1 ,y1 , 5 координаты (x,y,z) точки
drawPoint(flag,x1,y1,50);
end;
end;
end.
Приложение (процедура построения графика для лабораторной работы)
Если имеется массив точек не стоит использовать его для дальнейшего построения функции ввиду сложности пробегания точек, достаточно вставить в конец программы строчки приведенные ниже где –d d интервал по x и y
k-количество точек
f(x1,y1) – некая функция например:
function f(x,y:real):real;
begin
f:=x*x/(2)+y*y/(2);
end;
begin
Код рисования графика
drawXYZ(-d,d,-d,d,0,100,400,600,40,flag);
k:=100
hx:=2*d/k; //шаг по оси X
hy:=2*d/k; //шаг по оси Y
for i:=1 to k do
begin
x1:=-d+(i-1)*hx; //x1
x2:=-d+i*hx; //x2
y1:=0;
y2:=0;
for j:=1 to k do
begin
y1:=-d+(j-1)*hy;
y2:=-d+j*hy;
drawPolygone(flag,x1,y1,f(x1,y1),x2,y1,f(x2,y1),x1,y2,f(x1,y2),x2,y2,f(x2,y2));
end;
end;