16.4.80. Пример использования подпрограмм модуля Graph
В качестве примера использования ресурсов модуля Graph рассмотрим программу, которая изображает график функции exp(-Ax)*sin(x) при изменении коэффициента А.
Пример.
program Example29; |
|
uses Graph; |
|
const ExpBeg =0.1; |
{Начальное значение коэффициента показателя экспоненты} |
DeltaExp =0.1; |
{Приращение коэффициента показателя экспоненты} |
var X0, Y0: Word; |
{Начало координат} |
X, Y: Real; |
{Текущие координаты} |
i, j.: Word; |
|
GraphDriver: Integer; |
{Код драйвера графического утройства} |
GraphMode: Integer; |
{Код графического режима} |
Switch: Boolean; |
{Переключатель окон} |
begin |
|
GraphDriver := Detect; |
{Автоматическое определение драйвера граф. устройства} |
InitGraphCGraphDriver, GraphMode, ''); |
{Инициализация графического режима. Драйвер - в текущем каталоге} |
if GraphResultogrOk then |
|
begin |
|
WriteLn('Ошибка при включении графического режима'); |
|
Halt |
|
end; |
|
Х0 := 20; |
{Координата в пикселях} |
Y0 := GetMaxY div 2; |
{Координата в пикселях} |
Switch := True; |
{Исходное состояние переключателя окон} |
for j := 0 to 10 do |
{Цикл формирования изображений} |
begin |
|
SetActivePage(Ord(Switch)); |
{Активная страница видеопамяти} |
SetBkColor(Blue); |
{Цвет фона} |
SetColor(White); |
{Цвет фигур и текста} |
ClearDevice; |
{Очистка активной страницы} |
Line(X0, 20, X0, GetMaxY - 20); |
{Горизонтальная ось} |
Line(X0, Y0, GetMaxX - 20, Y0); |
{Вертикальная ось} |
MoveTo(X0, Y0); |
{Начало координат}; |
for i := 1 to GetMaxX - 40 do |
{Формирование графика} |
begin |
|
X := i * 4 * Pi / (GetMaxX - 40); |
|
Y := Exp(-X * (ExpBeg + DeltaExp * j)) * Sin(X); |
|
LineTo(X0 + i,Y0 - Round(Y * 150)) |
|
end; |
|
SetVisualPage(Ord(Switch)); |
{Видимая страница видеопамяти} |
Switch := not Switch |
|
end; |
|
CloseGraph; |
{Завершение работы в графическом режиме} |
ReadLn |
|
end. |
|
|
|
С помощью этой программы на экран выводятся последовательно одиннадцать графиков требуемой функции с изменяющимся коэффициентом А показателя экспоненты. При этом изображение сначала подготавливается на невидимой странице видеопамяти, а затем уже выводится на экран, после чего очередное изображение подготавливается на другой странице. В этой программе используется ряд стандартных процедур и функций модуля Graph (ClearDevice, CloseGraph, GetMaxX, GetMaxY, GraphResult, InitGraph, Line, LineTo, MoveTo, SetActivePage, SetBkColor, SetColor, SetVisualPage) и констант модуля (Blue, Detect, grOk, White). Предусмотрено автоматическое определение драйвера графического устройства и графического режима.
|