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). Предусмотрено автоматическое определение драйвера графического устройства и графического режима.
|