Отчет по лабораторной работе № 5 «Компьютерное моделирование» «Математические модели геометрического

advertisement
Отчет по лабораторной работе № 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.
Решить симплекс-методом задачу линейного программирования,
указанную в соответствующем варианте.
Download