>
Y 2: Integer ), яка зобразить на екрані прямокутник з діагоналлю (X1, Y1) - (X2, Y2). Для малювання квадрата треба вибрати висоту прямокутника так, щоб вона дорівнювала добутку ширини на коефіцієнт стиснення зображення. p> Щоб побудувати фігури з великою кількістю вершин (у тому числі і незамкнуті), можна скористатися процедурою
DrawPoly (NumPoints: Word; VAR PolyPoints)
Вона дозволяє малювати на екрані дисплея будь-яку ламану, задану набором координат деякої безлічі точок. Це може бути як складна геометрична фігура, так і таблична математична функція. Параметр NumPoints - це кількість точок ламаної (зауважимо, що якщо необхідно намалювати замкнутий багатокутник з N вершинами, то значення NumPoints повинно бути на одиницю більше числа N, а координата (N +1)-й точки повинна бути такий же, як координата першої). Під безтиповою параметром PolyPoints розуміється будь-яка змінна, що складається з наборів двокомпонентних записів. Поля кожного запису повинні містити координати X-і Y чергової точки. У модулі Graph введено такий тип:
TYPE
PointType = RECORD
X , Y : Integer ; {координати точки }
END ;
Зазвичай набір точок організується як масив із записів типу PointType (і саме до такої структурі наводиться значень параметра PolyPoint при роботі процедури DrawPoly). Приклад побудови графіка функції за допомогою процедури DrawPoly наведено далі.
USES Graph;
{підключений модуль Graph}
{$ I initgraf.pas}
{процедура ініціалізації}
CONST
Pi * 3.14151828;
{константа Pi (заміщає функцію)}
Pi2 = 2 * Pi;
{різні похідні від Pi ...}
Pi001 = 0.01 * Pi;
VAR
angle: Real;
sine_func: Array [1.201] of PointType;
{масив точок}
maxy, i: Integer;
BEGIN
В
Grlnit;
{ініціалізація графіки}
maxy: = GetMaxY div 2;
{середина екрану по осі Y}
angle: = 0.0;
{завдання стартових значень}
i: = 0;
{лічильник точок у sine_func}
repeat
{цикл заповнення sine_func}
Inc (i);
sine_func [i]. x: = Round (100 * angle) + 10;
sine_func [i]. y: = Round (100 * Sin (angle)) + maxy;
angle: = angle + Pi001;
until angle> Pi2;
DrawPoly (i, sine_func) ; /Td>
{малювання графіка синуса}
ReadLn;
{пауза до натискання введення}
CloseGraph
{закриття графіки}
END.
За допомогою DrawPoly можна вивести графік частини функції. Для цього достатньо вказати при переданому масиві номер n першого розглянутого елемента (тобто точки), а в першому параметрі - кількість розглянутих точок, починаючи з n-й, наприклад
DrawPoly (20, sine _ func [100 ]);
Такий виклик виведе ламану лінію по точках з номерами 100, 101, ..., 119. p> При виведенні кількості точок, порівнянного зі значенням GetMaxX, і при несплошном стилі лінії може виявитися, що крок між сусідніми точками відповідає ширині пропусків між пунктиром. У підсумку лінія може взагалі не проявитися на екрані. Треба або зменшити кількість точок, або обрати суцільний тип лінії. p> Управління квітами і шаблонами заливки (заповнення)
Розглянемо процедури, керуючі кольоровою гамою зображення...