ВУЗ:
Составители:
Рубрика:
95
Пример:
Программа, которая рисует на синем фоне пунктирную линию жёлтого
цвета, проходящую из левого нижнего угла в правый верхний.
Uses Graph, Crt;
Var gd,gm,i,max: Integer;
{$I D: /pas/init.pas}
Begin
Init;
SetColor (Yellow);
SetBkColor (Blue);
SetLineStyle (3,1,1);
Line (0, GetMaxY, GetMaxX, 0);
Repeat Until KeyPressed;
CloseGraph;
end.
Построение графиков функций и вывод текста
Рассмотрим последовательность действий, которые нужно совершить
при построении графиков, на примере программы, обеспечивающей вывод на
экран графика синусоиды, аргумент которой изменяется в диапазоне от 0 до
360 градусов.
Сначала установим цвет экрана и осей координат:
SetColor(0);
SetBkColor(1);
Выведем на экран вертикальную и горизонтальную оси координат, в
которых будет нарисован график так, чтобы границы горизонтальной
оси от-
стояли от краёв экрана на 10 пикселей, а вертикальной – на 5. Для
определения максимального разрешения в установленном графическом ре-
жиме воспользуемся функциями GetMaxX и GetMaxY, возвращающими
максимальные значения координат по оси Х и Y соответственно:
Line(10,5,10,GetMaxY-5);
Line(10,GetMaxY div 2,GetMaxX-10,GetMaxY div 2);
Затем подготовим для вывода графика зеленый цвет:
SetColor(2) ;
поместим указатель текущего пикселя в начало координат
MoveTo (10,GetMaxY div 2);
96
и
вычислим значение функции для каждой точки оси X:
For i:=0 to GetMaxX-20 Do
begin
Sn:=Sin (i*2*pi/(GetMaxX-20)) ;
Полученные значения преобразуем в координаты точек, которые буду
выведены на экран. Для этого умножим каждое текущее значение функции на
размер области экрана, отведенный для вывода полуволны синусоиды, и ок-
руглим полученные значения. Заметим, что поскольку мы хотим вывести
график почти на весь
экран, то размер области по вертикальной оси примем
равным половине разрешения по оси Y минус 5. Поэтому он может быть вы-
числен как GetMaxY div 2 - 5.
IntSn:=Round((GetMaxY div 2 -5)*Sn);
Для вывода на экран графика синуса воспользуемся функцией LineTo.
Учтем, что ось Х расположена в центре вертикальной области экрана:
LineTo(i+10,GetMaxY Div 2-IntSn) ;
end;
Перед InSn ставится знак минус, так как координаты по оси Y в
мате-
матике увеличиваются в направлении снизу вверх, а на экране дисплея - в
обратном направлении. Если это не учитывать, будет построен график, зер-
кально отраженный относительно оси X, и вместо графика функции Y=Sin(X)
получится график Y= - Sin(X).
Для вывода цифр используем процедуру OutTextXY(X,Y,St). Парамет-
ры Х и Y определяют координаты точки, начиная с которой будет выведена
строка St. Если
необходимо вывести на экран значение переменной вещест-
венного или целого типа, его необходимо преобразовать к типу String c
помощью процедуры Str.
Выведем под правым концом оси число 360. Для этого предварительно
зададим координаты начала вывода:
XCoord:=GetMaxX
−60;
YCoord:=GetMaxY div 2;
Затем преобразуем константу 360 в строковую переменную
Str(360,S) ;
и определим параметры выводимого текста, обратившись к процедуре Set-
TextStyle(Font,Direction,CharSize:Word). Эта процедура устанавливает тип
Пример: и вычислим значение функции для каждой точки оси X: Программа, которая рисует на синем фоне пунктирную линию жёлтого For i:=0 to GetMaxX-20 Do цвета, проходящую из левого нижнего угла в правый верхний. begin Uses Graph, Crt; Sn:=Sin (i*2*pi/(GetMaxX-20)) ; Var gd,gm,i,max: Integer; {$I D: /pas/init.pas} Полученные значения преобразуем в координаты точек, которые буду Begin выведены на экран. Для этого умножим каждое текущее значение функции на Init; размер области экрана, отведенный для вывода полуволны синусоиды, и ок- SetColor (Yellow); SetBkColor (Blue); руглим полученные значения. Заметим, что поскольку мы хотим вывести SetLineStyle (3,1,1); график почти на весь экран, то размер области по вертикальной оси примем Line (0, GetMaxY, GetMaxX, 0); равным половине разрешения по оси Y минус 5. Поэтому он может быть вы- Repeat Until KeyPressed; числен как GetMaxY div 2 - 5. CloseGraph; end. IntSn:=Round((GetMaxY div 2 -5)*Sn); Для вывода на экран графика синуса воспользуемся функцией LineTo. Построение графиков функций и вывод текста Учтем, что ось Х расположена в центре вертикальной области экрана: LineTo(i+10,GetMaxY Div 2-IntSn) ; Рассмотрим последовательность действий, которые нужно совершить end; при построении графиков, на примере программы, обеспечивающей вывод на экран графика синусоиды, аргумент которой изменяется в диапазоне от 0 до Перед InSn ставится знак минус, так как координаты по оси Y в мате- 360 градусов. матике увеличиваются в направлении снизу вверх, а на экране дисплея - в Сначала установим цвет экрана и осей координат: обратном направлении. Если это не учитывать, будет построен график, зер- SetColor(0); кально отраженный относительно оси X, и вместо графика функции Y=Sin(X) SetBkColor(1); получится график Y= - Sin(X). Выведем на экран вертикальную и горизонтальную оси координат, в Для вывода цифр используем процедуру OutTextXY(X,Y,St). Парамет- которых будет нарисован график так, чтобы границы горизонтальной оси от- ры Х и Y определяют координаты точки, начиная с которой будет выведена стояли от краёв экрана на 10 пикселей, а вертикальной на 5. Для строка St. Если необходимо вывести на экран значение переменной вещест- определения максимального разрешения в установленном графическом ре- венного или целого типа, его необходимо преобразовать к типу String c жиме воспользуемся функциями GetMaxX и GetMaxY, возвращающими помощью процедуры Str. максимальные значения координат по оси Х и Y соответственно: Выведем под правым концом оси число 360. Для этого предварительно зададим координаты начала вывода: Line(10,5,10,GetMaxY-5); Line(10,GetMaxY div 2,GetMaxX-10,GetMaxY div 2); XCoord:=GetMaxX −60; Затем подготовим для вывода графика зеленый цвет: YCoord:=GetMaxY div 2; Затем преобразуем константу 360 в строковую переменную SetColor(2) ; Str(360,S) ; поместим указатель текущего пикселя в начало координат и определим параметры выводимого текста, обратившись к процедуре Set- MoveTo (10,GetMaxY div 2); TextStyle(Font,Direction,CharSize:Word). Эта процедура устанавливает тип 95 96
Страницы
- « первая
- ‹ предыдущая
- …
- 46
- 47
- 48
- 49
- 50
- …
- следующая ›
- последняя »