Документ взят из кэша поисковой машины. Адрес оригинального документа : http://wasp.phys.msu.ru/forum/lofiversion/index.php?t1627.html
Дата изменения: Unknown
Дата индексирования: Mon Apr 11 12:15:10 2016
Кодировка: Windows-1251
Студенческий форум Физфака МГУ > Matlab
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Matlab
Студенческий форум Физфака МГУ > Наука физика > Есть проблема
Pumpov
Как в Матлабе заставить двигаться точку по заданному з-ону?
А потом - чтоб прямоугольный брусок двигался поступательно по заданному з-ону. И как его нарисовать? Кто знает, откликнитесь поскорее, плс!
cuvalda
Делается сие безобразие так:

обсчитываешь массивы с координатами
циклъ по i:
пауза удобной длительности
рисуешь белую точку на месте i-1-й
ставишь i-ю точку
endъ

Нечто подобное - в примере (правда, по-моему, там не точки, а вполне конечные штукони типа прямоугольников).


hF1=figure('NumberTitle', 'off', ...
'Name', 'The Brawn Motion', ...
'Color', [0 1 0]);
axis([-1 1 -1 1]);
drawnow;
r=1; x0=0; y0=0; LM=0.5; del=1;
XP=[]; YP=[];
for t=1:50
dx=LM*(rand(1, 1)-0.5);
dy=LM*(rand(1, 1)-0.5);
x=x0+dx; y=y0+dy;
if abs(x)>del
x=x-2*dx;
end
if abs(y)>del
y=y-2*dy;
end
XP=[x-0.1, x+0.1];
YP=[y-0.06, y+0.06];
line(XP, YP, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
XP1=[x-0.1, x+0.1];
YP1=[y+0.06, y-0.06];
XP2=[x-0.1, x-0.1];
YP2=[y+0.06, y-0.06];
XP21=[x+0.1, x+0.1];
YP21=[y+0.06, y-0.06];
XP3=[x-0.06, x+0.06];
YP3=[y+0.06, y-0.06];
XP31=[x+0.06, x-0.06];
YP31=[y+0.06, y-0.06];
XP4=[x-0.03, x];
YP4=[y-0.06, y];
XP41=[x+0.03, x];
YP41=[y-0.06, y];
XPh=[x, x];
YPh=[y, y+0.03];
XPa=[x, x];
YPa=[y, y-0.05];
line(XP1, YP1, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP2, YP2, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP21, YP21, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP3, YP3, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP31, YP31, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP4, YP4, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP41, YP41, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XPh, YPh, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', 3);
line(XPa, YPa, 'Color', 'black', ...
'EraseMode', 'none', ...
'LineWidth', 8);
drawnow;
pause(0.5);
line(XP, YP, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP1, YP1, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP2, YP2, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP21, YP21, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP3, YP3, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP31, YP31, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP4, YP4, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XP41, YP41, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', r);
line(XPa, YPa, 'Color', 'white', ...
'EraseMode', 'none', ...
'LineWidth', 8);
drawnow;
x0=x; y0=y;
end

Извините за жуткий формат, че-то файлом не получилось...
Pumpov
А как сделать одновременное движение двух брусков - независимо друг от друга?
cuvalda
Рисуешь два бруска с помощью 4-х line, пауза, закрашиваешь, потом опять рисуешь... А что независимы - просто д/каждого свои массивы координат... Не пойму в чем вопрос.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2016 IPS, Inc.