русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вывод функциональных зависимостей


Дата добавления: 2014-11-28; просмотров: 473; Нарушение авторских прав


Произвольную кривую можно вывести как, используя процедуру вывода отрезков прямых линий Line, так и процедуру вывода многоугольниковDrawPoly.

Перед началом вывода функциональной зависимости необходимо определить размеры графика.

Во-первых, начало координат следует отодвинуть от левой границы экрана для размещения шкалы размерности по оси ординат.

Во-вторых, необходимо сделать отступ от правой границы экрана для указания размерности оси абсцисс.

В-третьих, следует определить размер графика по высоте так, чтобы он имел отступы от верхней и нижней границ экрана, был бы достаточно крупным и, в то же время, удобным для обозрения.

В-четвёртых, надо определить количество выводимых точек графика.

Пример. Программа вывода синусоидальной функции с использованием процедуры вывода отрезков прямых линийLine.

Program sinus1;

uses Crt, Graph;

const

N = 500; (* Количество точек графика *)

var

d, m, e, Xmax, Ymax, Xfirst, Xend, Y0, Ym: integer ;

X, Y: array [0 .. N] of word;

k: word ;

Xfront, Xback, hx, hfi, Nt, Em, Dy, SY, mY : real;

begin (* Тело программы – раздел операторов *)

clrScr;

Em := 3; Nt := 2; (* Выбор амплитуды и числа периодов синусоиды *)

Xfront := 0.15; Xback := 0.2; (* Выбор отступов графика по оси Х *)

Dy := 0.35; (* Выбор высоты графика в относительных единицах *)

Xmax := GetMaxX; Ymax := GetMaxY; (* Нахождение максимального количества пикселей по осям экрана *)

Xfirst := trunc (Xfront * Xmax); Xend := Xmax – trunc (Xback * Xmax);

(* Определение начальных b конечных координат графика *)

Y0 := Ymax div 2; (* Местоположение оси Y на экране*)

SY := Dy* Ymax / 2; (* Определение длины оси Y вверх и вниз относительно начальной координаты Y0 *)

Ym := trunc (SY); (* Перевод SY в графические координаты *)

mY := 0.1*Em/Dy; (* Выбор масштаба амплитуды синуса *)



hx := (Xend – Xfirst) / N; hfi := 2 * pi *Nt / N; (* Вычисление шагов изменения координаты Х и фазы синуса *)

d := detect; m := VGAMed;

InitGraph (d, m, ' '); (* Инициализация графического режима *)

(* Блок проведения осей *)

SetBkColor (blue); SetLineStyle (0, 0, 1); SetColor (white);

Line (Xfirst, Y0, Xend, Y0); (* Проведение оси Х *)

Line (Xfirst, Y0 – Ym, Xfirst, Y0 + Ym); (* Проведение оси Y *)

(* Блок вычисления и рисования синусоидальной функции.

Вычисление и запоминание координат точек в массивах X и Y,

вывод функции отрезками прямых линий *)

SetLineStyle (0, 0, 3); SetColor (red);

X [0] := Xfirst; Y [0] := Y0;

for k := 1 to N do

Begin

X [k] := Xfirst + trunc (k*hх);

Y [k] := Y0 – trunc (mY*SY*sin (k*hfi);

Line (X [k-1], Y [k-1], X [k], Y [k] );

Delay (100);

end;

readln;

CloseGraph (* Процедура закрытия графического режима *)

end.

Принятые обозначения:

Xfront, Xback – отступы в относительных единицах от левой (передней) и правой (задней) границ экрана соответственно,

Dy – относительный размер графика по оси ординат,

Y0 – координата положения оси Y на экране,

hx – шаг по оси абсцисс,

hfi – шаг по аргументу (по углу, радиан),

Nt – количество периодов синусоиды,

Em – амплитуда синусоиды.

ПроцедураDrawPoly ( N: word; var Points) модуля Graph рисует текущим цветом и типом линии произвольную ломаную линию, заданную N вершинами (точками излома) с графическими координатами Points. Координаты точек излома задают парой значений типа word, первое из которых определяет горизонтальную, второе – вертикальную координаты. Points – переменная типа record. Если крайние точки совпадают, то будет вычерчен многоугольник. Поэтому полный синтаксис процедуры DrawPoly будет иметь вид, например,

type

Points = record

X, Y : word

end;

var

A: array [1..50] of Points;

N: word;

. . . . . . .

С помощью процедурыDrawPoly удобно выводить на экран не только многоугольники или ломаные линии, но и графики функций, заданных формулами. Рассмотрим, например, вывод на экран графика синусоидальной функции.

Пример. Программа вывода синусоидальной функции с использованием процедуры вывода многоугольниковDrawPoly.

Program sinus2;

uses Crt, Graph;

const

N = 500; (* Количество точек графика *)

type

Points = record

X, Y : word

end;

var

d, m, er, Xmax, Ymax, Xf, Xe, Y0, Ym: integer ;

k: word ;

Xfr, Xb, hx, hfi, Nt, Em, Dy, SY, mY: real;

coords : array [0..N] ofPoints;

begin

ClrScr;

Em := 3; Nt := 2; (* Выбор амплитуды и числа периодов синусоиды *)

Xfr := 0.15; Xb := 0.2; (* Выбор отступов графика по оси Х *)

Dy := 0.35; (* Выбор высоты графика в относительных единицах*)

d := detect; m := VGAMed;

InitGraph (d, m, ' ');

(* Получение номера ошибки, если инициализация режима не произошла *)

er := GraphResult ;

if er <> grOk then

Begin

writeln (GraphErrorMsg (er));

Halt

end;

Xmax := GetMaxX; Ymax := GetMaxY;

Xf := trunc (Xfr * Xmax); Xe := Xmax – trunc (Xb * Xmax);

Y0 := Ymax div 2; SY := Dy* Ymax / 2; Ym := trunc (SY); mY := 0.1*Em/Dy;

hx := (Xe – Xf) / N; hfi := 2 * pi *Nt / N;

SetBkColor (blue); SetLineStyle (0, 0, 1); SetColor (white);

Line (Xf, Y0, Xe, Y0); Line (Xf, Y0 + Ym, Xf, Y0 – Ym);

(* Блок вычисления и рисования синусоиды *)

SetLineStyle (0, 0, 3); SetColor (red);

for k := 0 to N do with coords [k] do

Begin

X := Xf + trunc (k*hх);

Y := Y0 – trunc (mY*SY*sin (k*hfi);

(* Рисование синусоиды с помощью процедуры DrawPoly)

DrawPoly (N, coords);

end;

readln;



<== предыдущая лекция | следующая лекция ==>
Стандартные средства Graph, обеспечивающие вывод текста | CloseGraph


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.845 сек.