Анимированные графики. Как построить x, y, z от t?

Форум пользователей пакета Maple

Модератор: Admin

evg612
Сообщения: 14
Зарегистрирован: Пт май 25, 2018 11:53 pm

Анимированные графики. Как построить x, y, z от t?

Сообщение evg612 » Сб май 26, 2018 2:09 pm

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

restart;
t := [1,2,3,4,5,6,7,8,9,10]:
x:= [2,1,-3,-8,-5,-4.-8,-4,6,2,9]:
y:= [2,5,3,8,5,4.3,4,6,3,4]:
z:= [3,5,3,1,5,4.3,5,4,3,1]:
tx:=zip(`[]`, t, x);
ty:=zip(`[]`, t, y);
tz:=zip(`[]`, t, z);


plots:-animate(plot,[xy[1..floor(i)], color=red, thickness=2, view=[0..10,0..10]], i=1..10);

Kitonum
Сообщения: 2032
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Анимированные графики. Как построить x, y, z от t?

Сообщение Kitonum » Сб май 26, 2018 9:18 pm

Вот код для параллельной анимации трёх ломаных:

Код: Выделить всё

restart;
t := [1,2,3,4,5,6,7,8,9,10]:
x:= [2,1,-3,-8,-5,-4.-8,-4,6,2,9]:
y:= [2,5,3,8,5,4.3,4,6,3,4]:
z:= [3,5,3,1,5,4.3,5,4,3,1]:
tx:=zip(`[]`, t, x):
ty:=zip(`[]`, t, y):
tz:=zip(`[]`, t, z):
A:=plots:-animate(plot,[tx[1..floor(i)], color=red, thickness=2], i=1..10, frames=60):
B:=plots:-animate(plot,[ty[1..floor(i)], color=blue, thickness=2], i=1..10, frames=60):
C:=plots:-animate(plot,[tz[1..floor(i)], color=green, thickness=2], i=1..10, frames=60):
plots:-display([A,B,C]);

Kitonum
Сообщения: 2032
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Анимированные графики. Как построить x, y, z от t?

Сообщение Kitonum » Вс май 27, 2018 9:04 am

Вот другое решение, дающее более плавную анимацию. Для этого с помощью процедуры ConvertToPiecewise , каждый список, определяющий ломаные линии, конвертируется в piecewise функции:

Код: Выделить всё

restart;
ConvertToPiecewise:=proc(L::list,v::name:='t')
local n;
n:=nops(L);
piecewise(seq(op([v>=L[i,1] and v<L[i+1,1],L[i,2]+(L[i+1,2]-L[i,2])/(L[i+1,1]-L[i,1])*(v-L[i,1])]), i=1..n-1), undefined);
end proc:
t := [1,2,3,4,5,6,7,8,9,10]:
x:= [2,1,-3,-8,-5,-4.-8,-4,6,2,9]:
y:= [2,5,3,8,5,4.3,4,6,3,4]:
z:= [3,5,3,1,5,4.3,5,4,3,1]:
tx:=zip(`[]`, t, x):
ty:=zip(`[]`, t, y):
tz:=zip(`[]`, t, z):
A:=plots:-animate(plot,[ConvertToPiecewise(tx), 't'=1..s, color=red, thickness=2], s=1..10, frames=90):
B:=plots:-animate(plot,[ConvertToPiecewise(ty), 't'=1..s, color=blue, thickness=2], s=1..10, frames=90):
C:=plots:-animate(plot,[ConvertToPiecewise(tz), 't'=1..s, color=green, thickness=2], s=1..10, frames=90):
plots:-display([A,B,C]);

Markiyan Hirnyk
Сообщения: 1210
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Анимированные графики. Как построить x, y, z от t?

Сообщение Markiyan Hirnyk » Вс май 27, 2018 9:31 am

Kitonum, Вы не пробовали анимировать результат команд из

Код: Выделить всё

CurveFitting
вместо

Код: Выделить всё

ConvertToPiecewise
?

Kitonum
Сообщения: 2032
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Анимированные графики. Как построить x, y, z от t?

Сообщение Kitonum » Вс май 27, 2018 9:44 pm

Не пробовал. Почему-то не подумал об этом. Команда CurveFitting:-Spline позволяет автоматически получить сплайн нужного порядка (в данном примере - сплайн первого порядка, т.е кусочно линейную функцию).