Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа по выделению графических об...doc
Скачиваний:
2
Добавлен:
10.09.2019
Размер:
1.77 Mб
Скачать

2

Утверждаю

Ректор университета

______________А.В. Лагерев

«_____»_____________2006г.

Алгоритмические языки и программирование решение систем неравенств и их графическое представление

Методические указания

к выполнению лабораторной работы №12

для студентов очной формы обучения

специальностей 075300 – "Организация и технология

защиты информации",

220300 – "Системы автоматизированного проектирования" Брянск 2006

УДК 004.43

Алгоритмические языки и программирование. Решение систем неравенств и их графическое представление: методические указания к выполнению лабораторной работы №12 для студентов очной формы обучения специальностей 075300 – "Организация и технология защиты информации", 220300 – "Системы автоматизированного проектирования".– Брянск: БГТУ, 2006. - 11 с.

Разработал: Ю.А. Леонов, асс.

Научный редактор Ю.М. Казаков

Редактор издательства Л.И. Афонина

Компьютерный набор Ю.А. Леонов

Рекомендовано кафедрой «Компьютерные технологии и системы» БГТУ (протокол № 1 от 6.09.06)

Темплан 2006г., п. 164

Подписано в печать Формат 60х84 1/16. Бумага офсетная. Офсетная печать. Усл. печ. л. 0,63 Уч. – изд. л. 0,63 Тираж 50 экз. Заказ . Бесплатно.

Издательство брянского государственного технического университета, 241035, Брянск, бульвар 50-летия Октября, 7, БГТУ. 54-90-49

Лаборатория оперативной полиграфии БГТУ, ул. Харьковская, 9

  1. Цель работы

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

Продолжительность работы – 3ч.00мин.

  1. Теоретическая часть

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

Пусть дана следующая система неравенств:

Представим графически решение системы неравенств (рис. 1).

Рис.1. Графическое решение системы неравенств

Чтобы найти решение данной системы неравенств графически, нужно взять произвольную точку, например с координатами (0; 0), и подставить ее координаты в каждое неравенство системы. Если при этом неравенство остается верным, то она лежит в полуплоскости, являющейся решением данного неравенства. Решением системы неравенств будет область двойной штриховки.

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

Таблица 1

График функции

Функция

Обозначения

или

,

уравнение прямой,

где k=-A/B, b=-C/B

α – угол, образованный прямой с положительным направлением оси О­х;

k – угловой коэффициент, равный тангенсу угла наклона;

b – ордината точки пересечения с осью Оу;

,

уравнение окружности

R – радиус окружности

,

уравнение эллипса

a, b – длины полуосей

,

уравнение

гиперболы

a, b – длины полуосей

Окончание табл. 1

График функции

Функция

Обозначения

,

уравнение

параболы

a, b, c – свободные члены

уравнение

синусоиды

уравнение

косинусоиды

yравнение

тангенсоиды

уравнение

котангенсоиды

Приведем пример программы, выделяющей графическую область эллипса при наведении на неё курсора мыши.

Математическое уравнение данного эллипса

Эллипсоида разбивает плоскость на две части, в каждой из которых неравенства знакопостояны

Выберем неравенство, графическим решением которого будет выделение заданной графической области

Берем пробную точку (0; 0) и подставляем в неравенство – верно, значит, все точки внутри эллипсоиды принадлежат заданной графической области.

Реализация данного решения на языке Pascal:

Program MatAreas;

uses Graph, Crt, Mouse;

Const a=40; b=20;

var

grDriver: integer;

grMode : integer;

R : real;

Xmax, Ymax: integer;

loc: locrec;

CurColor: integer;

ReDraw : boolean;

BEGIN

grDriver := Detect;

InitGraph(grDriver, grMode,'D:\Bp\BGI');

MShow;

Xmax:=GetMaxX; Ymax:=GetMaxY;

MRowRange(0, Ymax);

MColRange(0, Xmax);

CurColor:=5; setcolor(CurColor);

Ellipse(Xmax div 2, Ymax div 2, 0, 360, a, b);

ReDraw:=false;

While (Keypressed<>true) Do

Begin

MPos(loc);

R:=sqr((loc.column-Xmax div 2)/a) + sqr((loc.row-Ymax div 2)/b);

if (abs(R)<=1) then

begin

if (CurColor=5) then Redraw:=true;

CurColor:=1;

end

else begin

if (CurColor=1) then Redraw:=true;

CurColor:=5;

end;

if (ReDraw) then

begin

setcolor(CurColor);

MHide;

Ellipse(Xmax div 2, Ymax div 2, 0, 360, a, b);

MShow;

ReDraw:=false;

end;

End;

Readkey;

CloseGraph;

END.

{Показываем курсор мыши}

{Устанавливаем мин. и макс. границы перемещения курсора мыши}

{Устанавливаем текущий цвет выводимых изображений}

{Рисуем эллипс}

{данные, возвращаемые в структуре loc, будут сообщать текущее состояние мыши}

{Если курсор мыши пересёк линию, то меняем цвет и устанавливаем значение переменной ReDraw в true}

{Если произошло изменение текущей области, то рисуем эллипс}

{Устанавливаем значение переменной ReDraw ложным, это означает, что прорисовка новым цветом закончена}

Комментарии к программе.

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

В переменной ReDraw хранится информация, означающая прорисовывать ли эллипс или нет. Когда переменная ReDraw равна true, тогда эллипс рисуется, если false, то не рисуется. Переменная ReDraw была введена для того, чтобы не прорисовывать эллипс каждый раз в цикле, а рисовать только при событии изменения выделенной области.