Графические возможности языка PASCAL

ÄВВЕДЕНИЕ

ÄРождение Паскаля

ÄГрафические возможности языка Паскаль

ÄРабота в графическом видеорежиме. Общий обзор

ÄИнициализация графического режима

ÄУправление экраном и окнами

ÄУправление цветом и фоном

ÄПостроение простейших графических изображений

ÄУправление курсором

ÄВывод текстовой информации в графическом видеорежиме

ÄАлгоритм построения окон и статических объектов в них

ÄДеловая графика

ÄПостроение графиков  элементарных функций

ÄРеализация имитации движения графических объектов

ÄСПРАВОЧНЫЕ ТАБЛИЦЫ

ÄСправочные  материалы о языке Pascal

ÄТВОРЧЕСТВО УЧАЩИХСЯ

ÄЗадания для самостоятельного выполнения

ÄПостроение функций второго порядка

ÄЭТО ИНТЕРЕСНО

ÄЛИТЕРАТУРА

 

ÄКАРТА

Построение графиков элементарных функций

 

Пусть дана некоторая функция у = f(х). Рассмотрим прямоугольную область координатной плоскости, которая  определяется значениями:

xMin ≤  x  ≤  xMax;

xMin ≤  x  ≤  xMax;

Эту область назовём областью функции, а координаты (х, у) — мировыми координатами. Графиком функции f(х) является некоторое конечное множество точек (хkk),  уk = f(xk), k=1, ..., n из области функции.

Выделим на экране компьютера прямоугольную область, которую будем называть окном, в котором поместим точечный график функции. В графическом режиме экран имеет другую систему координат U и V.

Окно определяется значениями uMin, uMax, vMin, vMax в координатах экрана. Нужно отобразить область функции в окно так, чтобы каждой точке (хк, ук) в мировых координатах соответствовала точка (Uк, Vк) в экранных  координатах.

Для перехода к координатам экрана определим координаты преобразований:

         (1)

 

рх,  ру  называются   коэффициентами  сжатияа   и   b можно рассматривать как координаты точки на экране, в которую переходит начало координат.

Пусть точка (xMin, yMin) переходит в точку (uMin,vMax), а точка (хMах, уМах) переходит в точку (uMax, vMin). Тогда, учитывая  формулы (1), будем   иметь:

 

 Из этих формул получим коэффициенты рх, ру, а и Ь:

Учитывая формулы (2), опишем по шагам алгоритм построения точечного  графика функции у = f(х).

Шаг 1. Определим исходные данные uMin, uMax, vMin, vMax, xMin, xMax, yMin, уМах, а также количество точек n=uMax — uMin и шаг изменения х xStep=(xMax — xMin)/n.

Шаг 2. Нарисуем рамку, обрамляющую окно (это будет прямоугольник, левый верхний угол которого имеет координаты (uMin, vMin), а правый нижний угол — (uMax, vMax).

Шаг 3. Вычислим кооэффициенты сжатия рх и ру по формулам (2).

Шаг 4. Нарисуем оси координат. Для этого сначала преобразуем х в и, а у в v:

тогда ось OY будет иметь координаты (u, vMin), (u, vMax), а ось ОХ будет иметь координаты (uMin, v), (uMax, v).

Шаг 5.    Строим график функции y = f(x) из n точек, преобразовывая  х в u,  а у в v.

Пример построения графика функции

Приведем   программу  построения   графика   функции y=х2 — 5х + 6,  используя  следующие  исходные данные:

xMin= —2;    yMin= —2; xMax = 10; уМах=10.

 uses Graph;
Const uMin=50; uMax=600; vMin=50; vMax=450;
{Окно графика функции}
Var grDriver: integer;
grMode: integer;
xStep:real; {Шаг по х}
n,k:integer; {Число точек графика}
x,y,px,py:real;
xMin, yMin,yMax, xMax:real;{Область функции}

Procedure Grlnit;
Begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'');
IF GraphResult<>0 then
begin
Writeln('Ошибка инициализации!');
writeln('Работа программы прервана');
Halt(1)
end
End;
Function xScr(x: real):integer;
{Преобразование координаты х в u}
begin
xScr:=Round((x-xMin)*px+uMin);
end;
Function yScr(y:real):integer;
{Преобразование координаты y в v}
begin
begin
yScr:=Round((y-yMax)*py+vMin);
end;
Function f(x:real):real;
{Вид функции}
begin
f:=X*X-5*X+6;
end;
Begin
{Ввод исходных значений области функции}
write('xMin='); readln(xMin);
write('xMax='); readln(xMax);
write('yMin='); readln(yMin);
write('yMax='); readln(yMax);
px:=(uMax-uMin)/(xMax-xMin);
py:=-(vMax-vMin)/(yMax-yMin);
Grlnit;
{Построение рамки прямоугольника}
SetLineStyle(0,0,3);
Rectangle(uMin,vMin,uMax,vMax);
{Построение осей координат}
SetLineStyle(0,0,1);
If (xMin<0) and (xMax>0) then
Line (xScr(0),vMin,xScr(0),vMax);
If(yMin<0) and(yMax>0) then
Line(uMin,yScr(0),uMax,yScr(0));
{Определение количества точек графика}
n:=uMax-uMin;
{Вычисление шага}
xStep:=(xMax-xMin)/n;
x:=xMin;
{Вывод графика в виде n точек желтого цвета, преобразовывая при этом х в u, у в v}
for k:=1 to n do
begin
y:=f(x);
if(y> yMin) and (y<yMax) then PutPixel(xScr(x),yScr(y),Yellow);
x:=x+xStep
end;
readln;
Closegraph
End.

 Скачать Пример построения графика

Copyright © 2007 Cредняя школа №2 им. Н.П. Массонова г.Свислочь © Ярута Анжелина, Алла Синица