Отчет по лабораторной работе № 5 по дисциплине: «Компьютерное моделирование» на тему: «Математические модели геометрического проектирования» Вариант 1. Выполнил: Батищев Д.С. Проверила: Голощапова В.А. Урсол Д.В. Белгород 2012 Исходные данные: Задание 1. S1: S2: S3: x y x y x y 0 0 0 0 0 0 0 5 0 3 0 5 5 5 3 3 2 5 5 3 3 0 2 0 8 3 0 0 0 0 8 0 0 0 Задание 5. 5x1-10x2 + 50 0, -x1+5x2 + 5 0, 9x1+7x2 – 63 0, x1 0, x2 0, Q = 3x1+2x2 min Выполнение Задача 1. Построить R-функцию объекта S1, граница которого задана ломаной на плоскости (ломаная определена последовательностью координат вершин границы). Точки, принадлежащие объекту, отобразить в виде красных точек. function res = task1( x, y, lb, ub ) hold on; plot(x, y); XG = lb : 0.5 : ub ; YG = lb : 0.5 : ub ; for i = 1 : for j = n = for length(XG) 1 : length(YG) length(x) - 1; m = 1 : 1 : length(x) yeq = (y(m) > YG(j))~=(y(n) > YG(j)); xeq = XG(i) < (x(n) - x(m)) * (YG(j) - y(m)) / (y(n) - y(m)) + x(m); condition = yeq && xeq; if( condition ) plot(XG(i), YG(j), 'r*'); end; n = m; end; end; end; plot(min(x) - 2, min(y) - 2); plot(max(x) + 2, max(y) + 2); Рис. 1. Решение задачи 1. Задача 2. Построить сумму Минковского для объектов S1 и S2. Рис. 2. Решение задачи 2. function res = task2( s1, s2, step ) res = ''; hold on; plot( s1(1,:), s1(2,:), 'g' ); plot( s2(1,:), s2(2,:), 'r' ); for x1 = 0 : step : 8 for y1 = 0 : step : 3 for x2 = 0 : step : 3 for y2 = 0 : step : 3 plot( x1 + x2, y1 + y2, 'g.' ); end; end; end; end; for x1 = 3 : step : 5 for y1 = 3 : step : 5 for x2 = 0 : step : 3 for y2 = 0 : step : 3 plot( x1 + x2, y1 + y2, 'r.' ); end; end; end; end; end Листинг 2. Решение задачи 2. Сумма Минковского. Задача 3. Построить анимационную модель поверхности 0-уровня Ф-функции двух прямоугольников S2 и S3: а) отобразить в графическом окне объект S2, б) теоретически определить параметры поверхности 0-уровня Ф-функции двух прямоугольников S2 и S3, б) в виде анимации показать все возможные местоположения объекта S3 при его касании объекта S2 , т.е. полюс объекта S3 должен последовательно размещаться в точках моделируемой поверхности. function res = task3( s2, s3 ) res = 0; figs2 = line( s2(1,:), s2(2,:) ); figs3 = line( s3(1,:), s3(2,:) ); axis([-5 10 -5 10]); xp = 3; yp = 3; a2 = 3; b2 = 3; a3 = 2; b3 = 5; xx = []; yy = []; y = 3; for x = -2 : 0.3 : 3 xx = [xx x]; yy = [yy y]; end; x = 3; for y = 2 : 0.3 : 0 xx = [xx x]; yy = [yy y]; end; y = -3; for x = 3 : -0.3 : 0 xx = [xx x]; yy = [yy y]; end; x = -2; for y = -3 : -0.3 : 0 xx = [xx x]; yy = [yy y]; end; while 1 for i = 1 : 1 : length(xx) x0 = s3(1,:) + xx(i); y0 = s3(2,:) + yy(i); set(figs3, 'XData', x0, 'YData', y0); pause(0.1); end; end; end Листинг 3. Решение задачи 3. Рис. 3. Решение задачи 3. Задача 4. Построить анимационную модель выбора радиостанций для обслуживания передающего аппарата, находящегося в точке Р. Зоны действия радиостанций определены в условии задачи 11 лабораторной работы №1. Точка Р движется вдоль некоторой линии, пересекающей зоны действия станций (уравнение линии выбрать самостоятельно). Когда точка Р находится в зоне действия станции, соответствующая отображается синим цветом, в противном случае – красным. function res = task4( x, y, r ) res = 0; mpi = 0 : 0.01 : 2 * pi; x0 = 0; y0 = 0; m = length(x); n = length(mpi); xx = zeros(n,m); yy for i = 1 : 1 : m for j = 1 : 1 : xx(j,i) = x(i) yy(j,i) = y(i) end end = zeros(n,m); n + r(i) * sin(phi(j)); + r(i) * cos(phi(j)); xp = -2 * pi : 0.1 : 2 * pi; yp = 2 * cos(xp); fig = plot(xx,yy,'b',xp(1),yp(1),'or'); k = 1;p = 1;n = length(xp); while 1 for i=1:m rast = sqrt((x(i)-xp(k))^2 + (y(i) - yp(k))^2); if (rast <= r(i)) set(fig(i),'Color','r'); else set(fig(i),'Color','b'); end end set(hlines(end),'XData',xp(k),'YData',yp(k)); pause(0.05); k = k + p; if ((k > n) || (k < 1)) p = -p; k = k + p; end end end Листинг 4. Решение задачи 4. окружность Заданача 5. Решить симплекс-методом задачу линейного программирования, указанную в соответствующем варианте.