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

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

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; просмотров: 555. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Расчет концентрации титрованных растворов с помощью поправочного коэффициента При выполнении серийных анализов ГОСТ или ведомственная инструкция обычно предусматривают применение раствора заданной концентрации или заданного титра...

Психолого-педагогическая характеристика студенческой группы   Характеристика группы составляется по 407 группе очного отделения зооинженерного факультета, бакалавриата по направлению «Биология» РГАУ-МСХА имени К...

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

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