2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение09.01.2020, 14:26 
Аватара пользователя
Требуется визуализировать процесс увеличения дискретных тел:
1. Отрезка, составленного из единичных отрезков.
2. Стоящего на этом отрезке прямоугольного треугольника, составленного из столбцов с единичными основаниями.
3. Стоящей на этом треугольнике прямоугольной пирамиды, составленной из слоёв п.2 единичной высоты.
Рост должен быть дискретным - очередное приращение величины происходит за один такт.
Можно ли эту задачу решить в Maple? Если можно, то прошу помочь. Или подсказать в каких программах это можно сделать проще.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение12.01.2020, 02:40 
В случае Maple. [Проверялось в Maple 15]
Не понял задачу, поэтому сначала приведу банальность для п.1 - "растущий отрезок вдоль биссектрисы".
Код:
> plots[animatecurve]([trunc(t)/sqrt(2), trunc(t)/sqrt(2),t=0..10], frames= 200, thickness=2);
Можно экспортировать в аnimated-gif, а затем вставить в документ, поддерживающий такой gif.
Экспортируем стандартно
Код:
> plotsetup(gif);
> plots[animatecurve]([trunc(t)/sqrt(2), trunc(t)/sqrt(2),t=0..10], frames= 200, thickness=2);

Это подходит?

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 01:20 
Аватара пользователя
GAA в сообщении #1434640 писал(а):
"растущий отрезок вдоль биссектрисы"

Спасибо. Но нужно чтобы рос меньший катет от в направлении от острого угла к прямому, в мести с катетом рос стоящий на нем прямоугольный треугольник, вместе с треугольником росла стоящая на нем прямоугольная пирамида.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 01:25 
Если вариант с отрезком подходит, а также годится gif в качестве результата, то нарисуйте, пожалуйста, от руки два последовательных положения, что бы было понятно расположение.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 01:32 
Аватара пользователя
Отрезок растёт отлично :)

Треугольник должен выглядеть так, а края закрашенной области должны двигаться вправо. Треугольник сделан в Maple, сейчас буду искать код.

Изображение

Изображение

Изображение

-- Вт янв 14, 2020 01:42:28 --

Вот треугольник

Код:
S := 2*i-1; plots:-display(seq(plot([S, [i-.95, t, t = 0 .. S], [i-0.5e-1, t, t = 0 .. S]], x = i-.95 .. i-0.5e-1, thickness = 2, color = blue), i = 1 .. 3), seq(plot(S, x = i-.97 .. i-0.3e-1, color = blue, filled), i = 4 .. 10))

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 12:35 
Просто растущий треугольник нарисовать легко
Код:
> N:= 10:
> for i from 0 to N do L[i]:= [[0,0], [i, i], [i, 0]]; end do:
> Ind:= [seq(i, i=0..N)]:
> animate(polygonplot, [L[t], color=blue], t=Ind);

Можно ли наложить растущий треугольник на статический рисунок при использовании animate, я не знаю. Но можно банально наделать кадров и потом вывести.
Код:
> N:= 10:
> for i from 0 to N do L[i]:= [[0,0], [i, i], [i, 0]]; end do:
> Ind:= [seq(i, i=0..N)]:
> S:= seq(polygonplot([L[i], L[N]], color=[blue, gray]), i=0..N):
> display(S, insequence = true);

Вместо изменяющегося треугольника, конечно, можно строить другой полигон. (Треугольник в примере взят для простоты.)

Но в предыдущем моём сообщении вопрос был про пирамиду.
Вот банальный вариант с пирамидой для примера
Код:
> N:= 10:
> for i from 0 to N do
L1[i]:= [[0, i, 0], [i, 0, 0], [0, 0, i]];
L2[i]:= [[0, 0, 0], [i, 0, 0], [0, 0, i]];
L3[i]:= [[0, 0, 0], [0, i, 0], [0, 0, i]];
end do:
> Ind:= [seq(i, i=0..N)]:
> S:= seq(polygonplot3d([L1[i], L2[i], L3[i]], color=blue), i=0..N):
> display(S, insequence = true, axes=boxed);

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 12:52 
Аватара пользователя
Закрашенную область я понимал именно как разность между двумя, растущими с разными скоростями, треугольниками наложенными на третий - статичный.
Большое спасибо, я посмотрю и отвечу через два-три дня, раньше не будет возможности.

-- Вт янв 14, 2020 13:06:05 --

Успел посмотреть - в первом примере всё верно, а во втором ничего не происходит. Пирамида тоже растёт замечательно, только нужно, чтобы она росла не из прямого угла, а из острого.
А в целом это именно то, что мне было нужно, большое спасибо!

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:33 
GAA в сообщении #1435115 писал(а):
Можно ли наложить растущий треугольник на ...
Заглянул в help. Там это есть!
Во-первых, можно наложить в animate — options background
Код:
> N:= 10:
> for i from 0 to N do L[i]:= [[0,0], [i, i], [i, 0]]; end do:
> Ind:= [seq(i, i=0..N)]:
> S:= polygonplot(L[N], color = gray):
> animate(polygonplot, [L[t], color=blue], t=Ind, background=S);
Во-вторых, можно наложить анимацию на статический рисунок при выводе
Код:
> N:= 10:
> for i from 0 to N do L[i]:= [[0,0], [i, i], [i, 0]]; end do:
> Ind:= [seq(i, i=0..N)]:
> A:=animate(polygonplot, [L[t], color=blue], t=Ind):
> S:= polygonplot(L[N], color = gray):
> display([S, A], insequence = false);
(Это в дополнение к предыдущим вариантам для треугольника)

Но при просмотре страниц справки animate, display не нашёл вот чего. В среде Maple можно изменять скорость смены кадров в локальном меню: кликнув правой кнопкой мыши на рисунке и выбрав раздел Animation, понажимать Faster/Slower. А как это сделать «программно» (указать задержку — Frame delay)? Интересно это для анимированных gif.

Задержку, наверное, можно установить в графическом редакторе, но вот получаемые при помощи unfreez 2.1 (2001) [гифы] мне не понравились: в ppt-презентации не проигрывались.
[бесплатная программа unfreez позволяет из файлов-кадров делать анимированный gif.]
Если нет возможности указать программно в Maple задержку, то может быть есть простая программа создания анимированного gif из отдельных файлов-кадров?
Или простая программа, позволяющая менять delay в имеющемся анимированном гифе.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:43 
Аватара пользователя
А можно сделать так, чтобы пирамида росла из острого угла так же, как растёт прямоугольный треугольник? В итоге, он должен стать основанием пирамиды.
Конечная цель - показать цепочку: растущий отрезок -> растущий отрезок со стоящим на нем растущим прямоугольным треугольником -> растущий прямоугольный треугольник со стоящей на нём растущей прямоугольной пирамидой.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:50 
Не зная требований к визуализации — не ответить. В коде из сообщения post1435115.html#p1435115 просто стройте другие грани. А там уже может быть конкретные требования появятся.

 
 
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:58 
Аватара пользователя
Огромное спасибо, вы очень мне помогли. Буду экспериментировать, если упрусь - попрошу вашей помощи.

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group