Студопедия — Program DemoDrawPoly;
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Program DemoDrawPoly;






uses

Graph, Crt;

const

N=7; { Количество вершин многоугольника +1}

MultiRect: array[1..N] of PointType = {Координаты вершин}

((X: 200; Y: 100), {Координаты первой вершины и }

(X: 285; Y: 155),

(X: 285; Y: 255),

(X: 200; Y: 300),

(X: 115; Y: 255),

(X: 115; Y: 155),

(X: 200; Y: 100)); {последней (замыкающей) должны совпадать}

var

Gd, Gm, GrEr: Integer;

begin

Gd: = Detect;

InitGraph(Gd, Gm, ’d: \bp\bgi’);

GrEr: = GraphResult;

if GrEr = grOk then

begin

DrawPoly(N, MultiRect);

OutTextXY(50, 20, ’Нажмите любую клавишу...’);

Repeat Until KeyPressed;

CloseGraph;

end

else

begin

WriteLn(’Ошибка графики: ’, GrEr, ’. Нажмите Enter...’);

Readln;

end;

end.

 

Сведения о других примитивах можно найти в книгах по Турбо Паскалю или в справочной системе Турбо Паскаля.

 

Все фигуры, как отмечалось выше, рисуются текущим цветом и типом линии. Цвет линии задается из имеющегося активного набора цветов – палитры.

 

Пример. Написать программу построения графика заданной функции Y=f(X) для аргумента X, изменяющегося от xn до xk. Для определенности будем считать, что Y=sin(x), xn = –2π, xk = 2π.

Общие соображения по написанию программы для построения графиков приводились в п. 5.1.4. При построении графика должны быть определены масштабы – коэффициенты, с помощью которых натурные величины (X, Y) будут переводиться в графические координаты (xG, yG). В общем случае пределы изменения натурных величин: аргумента (xn, xk) и функции (Ymin, Ymax) должны быть отображены на выбранные пределы изменения графических координат:

xGnx графическое начальное,

xGkx графическое конечное,

yGny графическое начальное,

yGk – y графическое конечное.

С учетом сказанного, масштабы можно определить по формулам:

mx: =(xGk-xGn)/(xk-xn); { Масштаб по X }

my: =(yGk-yGn)/(ymax-ymin); { Масштаб по Y }

Максимальное и минимальное значения функции (хотя бы приблизительные, лучше с запасом в большую сторону) должны быть заданы пользователем. Для перехода к графическим координатам получим следующие соотношения:

xG: =Round(xGn+(x-xn)*mx);

yG: =Round(yGn+(ymax-y)*my);

Для построения графика воспользуемся процедурой LineTo, которая будет проводить линию от точки к точке.

Программа построения графика может быть такой.

 

Program PlotGrafik;

uses

Crt, Graph;

Const

xGn=20; { Константы, определяющие }

yGn=50; { область экрана, }

xGk=600; { в которую будет }

yGk=470; { выводиться график }

xn=-2*pi/2; { Начальное и }

xk=2*pi/2; { конечное значение аргумента }

ymin=-1; { Предполагаемые минимальное и }

ymax=1; { максимальное значения функции }

kT=150; { Количество точек графика }

Var

grDr, grMd, grEr: integer;

x, y, Dx: real;

xG, yG: integer;

mx, my: real; { Масштабы по X и Y }

 

Function f(x: real): Real;

begin

f: =sin(x); {Функция, для которой строится график}

end;

Begin

grDr: =Detect;

InitGraph(GrDr, GrMd, ’D: \bp\BGI’);

GrEr: =GraphResult;

if GrEr=GrOk then { Графический режим удачно открыт}

begin

SetBkColor(Blue);

ClearDevice; {Очистим экран, сделаем фон голубым}

Dx: =(xk -xn)/(kT-1); { Шаг изменения аргумента }

mx: =(xGk-xGn)/(xk-xn); { Масштаб по X }

my: =(yGk-yGn)/(ymax-ymin); { Масштаб по Y }

SetLineStyle(0, 0, 1); { Одинарная линия }

SetColor(Red); { Оси нарисуем красным }

Line(Round(xgn+(0-xn)*mx), ygn-20,

Round(xgn+(0-xn)*mx), ygk); {Ось Y, на ней X=0}

Line(xgn, Round(ygn+(ymax-0)*my),

xgk+20, Round(ygn+(ymax-y)*my)); {Ось X, на ней Y=0}

{Изображение стрелки на конце оси X и надписи X}

MoveTo(xgk+20, Round(ygn+(ymax-y)*my));

LineRel(-8, 4);

MoveTo(xgk+20, Round(ygn+(ymax-y)*my));

LineRel(-8, -4);

MoveRel(0, -25);

SetTextStyle(1, 0, 1); {Шрифт для обозначения осей}

OutText(’X’);

{Рисование стрелки на конце оси Y и надписи Y}

MoveTo(Round(xgn+(0-xn)*mx), ygn-20);

LineRel(-4, 8);

MoveTo(Round(xgn+(0-xn)*mx), ygn-20);

LineRel(4, 8);

MoveRel(0, -15);

OutText(’Y’);

SetColor(white); { Белый цвет для линии графика }

x: =xn; { Текущее значение для X }

y: =F(x); { Значение функции для этого X }

xG: =Round(xgn+(x-xn)*mx); {Графическая коорд. по X}

yG: =Round(ygn+(ymax-y)*my); {Графическая коорд. по Y}

MoveTo(xg, yg); { Курсор в эту точку экрана }

While x< =xk do {Цикл для всех значений аргумента}

begin

x: =x+dx;

y: =f(x);

xG: =Round(xgn+(x-xn)*mx);

yG: =Round(ygn+(ymax-y)*my);

LineTo(xG, yG);

end;

SetTextStyle(0, 0, 1); { Шрифт для вывода текста }

OutTextXY(5, 5, ’График функции Y=Sin(X)’);

OutTextXY(5, 20, ’Нажмите любую клавишу...’);

Repeat Until KeyPressed

CloseGraph; { Закрываем графический режим }

end

else

begin

WriteLn(’Ошибка графики ’, GrEr, ’ ’, GraphErrorMsg(GrEr));

WriteLn(’Нажмите Enter...’);

ReadLn;

end;

End.

 

Закраска замкнутой области выполняется процедурами:

5) SetFillStyle(Тип_закраски, Цвет: Word); – устанавливает тип (стиль) закраски и ее цвет.

 

В Турбо Паскале определено большое количество типов закраски, которые можно задавать либо с использованием предопределенных имен констант, либо их значений. Приведем некоторые из них:

0 – заполнение области фоновым цветом;

1 – сплошное заполнение области заданным цветом;

2 – заполнение области горизонтальными линиями;

3 – заполнение области наклонными линиями;

4 – заполнение области толстыми наклонными линиями

.......

11 – заполнение области частыми точками;

12 – заполнение области стилем, определяемым пользователем.

Цвет - цвет закраски (из палитры).

 

Пример. SetFillStyle(4, 1);

 

6) FloodFill(x, y, Цвет_границы: Word); – закрашивает ограниченную область, используя текущий образец закраски.

Точка (x, y) является внутренней точкой закрашиваемой области. Для заполнения области, ограниченной цветом, определяемым параметром Цвет_границы, используется текущий образец закраски.

Например, программа, которая рисует концентрические окружности с координатами центра (150, 100) всеми 15-ю цветами (MaxColors) и закрашивает получившиеся кольца всеми 11-ю типами заливки и цветом, отличным от цвета контура будет иметь вид.







Дата добавления: 2014-12-06; просмотров: 534. Нарушение авторских прав; Мы поможем в написании вашей работы!



Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

ПРОФЕССИОНАЛЬНОЕ САМОВОСПИТАНИЕ И САМООБРАЗОВАНИЕ ПЕДАГОГА Воспитывать сегодня подрастающее поколение на со­временном уровне требований общества нельзя без по­стоянного обновления и обогащения своего профессио­нального педагогического потенциала...

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

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

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

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия