2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение09.01.2020, 14:26 
Аватара пользователя


25/02/07

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

 Профиль  
                  
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение12.01.2020, 02:40 
Заслуженный участник


12/07/07
4523
В случае 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 
Аватара пользователя


25/02/07

887
Симферополь
GAA в сообщении #1434640 писал(а):
"растущий отрезок вдоль биссектрисы"

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

 Профиль  
                  
 
 Re: Дискретный рост отрезка, треугольника, пирамиды
Сообщение14.01.2020, 01:25 
Заслуженный участник


12/07/07
4523
Если вариант с отрезком подходит, а также годится gif в качестве результата, то нарисуйте, пожалуйста, от руки два последовательных положения, что бы было понятно расположение.

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


25/02/07

887
Симферополь
Отрезок растёт отлично :)

Треугольник должен выглядеть так, а края закрашенной области должны двигаться вправо. Треугольник сделан в 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 
Заслуженный участник


12/07/07
4523
Просто растущий треугольник нарисовать легко
Код:
> 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 
Аватара пользователя


25/02/07

887
Симферополь
Закрашенную область я понимал именно как разность между двумя, растущими с разными скоростями, треугольниками наложенными на третий - статичный.
Большое спасибо, я посмотрю и отвечу через два-три дня, раньше не будет возможности.

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

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

 Профиль  
                  
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:33 
Заслуженный участник


12/07/07
4523
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 
Аватара пользователя


25/02/07

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

 Профиль  
                  
 
 Re: Дискретный рост отрезка, треугольника, пирамиды. Анимация
Сообщение16.01.2020, 21:50 
Заслуженный участник


12/07/07
4523
Не зная требований к визуализации — не ответить. В коде из сообщения post1435115.html#p1435115 просто стройте другие грани. А там уже может быть конкретные требования появятся.

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


25/02/07

887
Симферополь
Огромное спасибо, вы очень мне помогли. Буду экспериментировать, если упрусь - попрошу вашей помощи.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group