Реферат: Модуль Graph в программе Turbo Pascal
Угловые параметры очень неудобны для нашей системы координат - мы можем определить координаты начала и конца дуг окружности или эллипса не иначе, как только используя известные тригонометрические выражения. Но в подобных вычислениях нет необходимости, поскольку эти координаты все равно известны внутри процедур Arc , Ellips , Sector и PieSlice .
Извлечь концевые координаты дуг позволяет процедура
GetArcCoords (VAR ArcCoords : ArcCoordsType )
Тип ArcCoordsType объявлен в модуле Graph следующим образом:
TYPE
ArcCoordsType = RECORD
X, Y | :Integer; | {центр} |
XStart, YStart | :Integer; | {начало} |
XEnd, YEnd | :Integer; | {конец} |
END ;
Рассматриваемая процедура возвращает результаты последнего вызова процедуры рисования дуги или сектора.
Построение прямоугольников и ломаных
Для построения прямоугольника достаточно вызвать процедуру Rectangle (Х1, Y 1, Х2, Y 2: Integer ), которая изобразит на экране прямоугольник с диагональю (X1, Y1) - (X2, Y2). Для рисования квадрата надо выбрать высоту прямоугольника так, чтобы она равнялась произведению ширины на коэффициент сжатия изображения.
Чтобы построить фигуры с большим количеством вершин (в том числе и незамкнутые), можно воспользоваться процедурой
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 } |
{$Iinitgraf.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) ; | { рисованиеграфикасинуса} |
ReadLn; | {пауза до нажатия ввода} |
CloseGraph | {закрытие графики} |
END. |
С помощью DrawPoly можно вывести график части функции. Для этого достаточно указать при передаваемом массиве номер n первого рассматриваемого элемента (т.е. точки), а в первом параметре — количество рассматриваемых точек, начиная с n-й, например
DrawPoly (20, sine _ func [100]);
Такой вызов выведет ломаную линию по точкам с номерами 100, 101,..., 119.
При выводе количества точек, соиз?