Файл:Fibre bundle - animation.gif
Материал из testwiki
Перейти к навигации
Перейти к поиску
Fibre_bundle_-_animation.gif (360 × 323 пкс, размер файла: 2,52 МБ, MIME-тип: image/gif, закольцованный, 261 фрейм)
Примечание: По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.
Этот файл находится на Викискладе и может использоваться другими проектами. Информация с его страницы описания приведена ниже.
Краткое описание
| ОписаниеFibre bundle - animation.gif |
English: Animation making clear how Moebius strip is obtained as a fibre bundle, where base space is a circle and a typical fibre corresponds to a line segment. |
| Дата | |
| Источник | Собственная работа |
| Автор | JozumBjada |
Лицензирование
Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
Этот файл доступен по лицензии Creative Commons «С указанием авторства — С сохранением условий» версии 4.0 Международная
- Вы можете свободно:
- делиться произведением – копировать, распространять и передавать данное произведение
- создавать производные – переделывать данное произведение
- При соблюдении следующих условий:
- атрибуция – Вы должны указать авторство, предоставить ссылку на лицензию и указать, внёс ли автор какие-либо изменения. Это можно сделать любым разумным способом, но не создавая впечатление, что лицензиат поддерживает вас или использование вами данного произведения.
- распространение на тех же условиях – Если вы изменяете, преобразуете или создаёте иное произведение на основе данного, то обязаны использовать лицензию исходного произведения или лицензию, совместимую с исходной.
Source
This animation was created using Mathematica 10.4.1.0 for Linux x86 (64-bit). Source code follows.
(* geometry constants *)
r=3; (* radius *)
{circlePos,stripPos}={-5,0};
tubeWidth=0.05;
(* appearance constants *)
{maxRecur,imgResolution}={2,100};
{circleColor,stripColor,fibreColor}={Darker[Green],Red,Blue};
plotRange={{-r-1,r+1},{-r-1,r+1},{-5,2}};
viewPoint={2.876201,-4.651416,1.7582050};
(* from curve make tube or arrow *)
tubePlot[plot_,tubeWidth_:tubeWidth]:=(plot)/.Line[pts_,rest___]:>Tube[pts,tubeWidth,rest]
tubeArrowPlot[plot_,tubeWidth_:tubeWidth]:=(plot)/.Line[pts_,rest___]:>Arrow@Tube[pts,tubeWidth,rest]
(* circle *)
circle[v_,z_:circlePos,r_:r]:={r Cos[v],r Sin[v],z}
ring=tubePlot@ParametricPlot3D[circle[u,stripPos],{u,0,2\[Pi]},PlotStyle->circleColor];
(* moebius strip *)
moebius[u_,v_]:={(r+u Cos[v/2]) Cos[v],(r+u Cos[v/2]) Sin[v],stripPos+u Sin[v/2]};
moebiusStrip=ParametricPlot3D[moebius[u,v],{u,-1,1},{v,0,2\[Pi]},PlotStyle->{stripColor,Opacity[0.8]},MaxRecursion->maxRecur,Mesh->None];
(* brush of fibres *)
brushFun=moebius[u,#]&/@Range[0,2\[Pi],0.1];
brush=ParametricPlot3D[brushFun,{u,-1,1},PlotStyle->fibreColor];
(* fibre *)
fibre=tubePlot@ParametricPlot3D[moebius[u,0],{u,-1,1},PlotStyle->{fibreColor,Opacity[0.8]},MaxRecursion->maxRecur,Mesh->None];
(* individual stages of animation... *)
ringGeneration={tubePlot@ParametricPlot3D[circle[u,stripPos],{u,0,#},PlotStyle->circleColor]}&/@Range[0.01,2\[Pi],0.1];
fibreGeneration={ring,tubeArrowPlot@ParametricPlot3D[moebius[u,0],{u,0,#},PlotStyle->fibreColor],tubePlot@ParametricPlot3D[moebius[u,0],{u,0,-#},PlotStyle->fibreColor]}&/@Range[0.01,1,0.05];
delayAfterFibreGeneration=Table[Last@fibreGeneration,5];
stripGeneration={ring,ParametricPlot3D[moebius[u,v],{u,-1,1},{v,0,#},PlotStyle->{stripColor,Opacity[0.8]},MaxRecursion->maxRecur,Mesh->None],tubeArrowPlot@ParametricPlot3D[moebius[u,#],{u,-1,1},PlotStyle->{fibreColor,Opacity[0.8]},MaxRecursion->maxRecur,Mesh->None]}&/@Range[0.01,2\[Pi]+0.05,0.1];
delayAfterStripGeneration=Table[Last@stripGeneration,5];
brushGeneration={moebiusStrip,fibre,ring,ParametricPlot3D[brushFun,{u,0,#},PlotStyle->fibreColor],ParametricPlot3D[brushFun,{u,0,-#},PlotStyle->fibreColor]}&/@Range[0.01,1,0.05];
ringMovement={moebiusStrip,brush,ring/.Tube[x___]:>Translate[Tube[x],{0,0,-#}]}&/@Range[0,4.2,0.1];
fibreMovement={moebiusStrip,brush,Last@ringMovement,Graphics3D[{fibreColor,Translate[Rotate[Tube[Line[{{0,0,0},{2,0,0}}],tubeWidth],\[Pi]/2 #,{0,1,0},{0,0,0}],#({-r,-r,stripPos+1}-moebius[0,0])+moebius[0,0]]}]}&/@Range[0,1,0.05];
ringMovement=Join[#,{fibre}]&/@ringMovement;
delayAfterFibreMovement=Table[Last@fibreMovement,20];
(* put everything together and rasterize *)
animation=Join[ringGeneration,fibreGeneration,delayAfterFibreGeneration,stripGeneration,delayAfterStripGeneration,brushGeneration,ringMovement,fibreMovement,delayAfterFibreMovement];
animation=Show[#,Boxed->False,Axes->False,ViewPoint->viewPoint,PlotRange->plotRange]&/@animation;
animation=Rasterize[#,ImageResolution->imgResolution]&/@animation;
(* export as gif animation and show *)
Export[NotebookDirectory[]<>"fibre_bundle_animation.gif",animation]
ListAnimate[animation]
Краткие подписи
Добавьте однострочное описание того, что собой представляет этот файл
Элементы, изображённые на этом файле
изображённый объект
Некоторое значение без элемента в Викиданных
11 июня 2016
История файла
Нажмите на дату/время, чтобы увидеть версию файла от того времени.
| Дата/время | Миниатюра | Размеры | Участник | Примечание | |
|---|---|---|---|---|---|
| текущий | 22:09, 20 июня 2016 | 360 × 323 (2,52 МБ) | wikimediacommons>JozumBjada | Arrows added. A circle going deeper. |
Использование файла
Следующая страница использует этот файл:
