Перемещение тела AutoCad DXF по трехмерной траектории в Mathematica - PullRequest
3 голосов
/ 09 апреля 2011

Я наткнулся на этот пост и нашел интересный ответ Велисария. Интересно, может ли он кто-то опубликовать его полный код ММА и дать некоторые объяснения. В общем, мой вопрос о том, как добиться такого рода поведения анимации / построения графиков в mma. Это выглядит потрясающе для меня!

Большое спасибо.

1 Ответ

3 голосов
/ 09 апреля 2011

Пожалуйста, скажите мне, если необходимы дальнейшие объяснения.

x[t_] := {Cos@t, Sin@t, .1  t} /; t <= 3 Pi;
x[t_] := {Cos@t, Sin@t, .3 Pi  (4 - t/Pi)} /; t > 3 Pi;
plotRange = {{-110, 110}, {-110, 110}, {-10, 110}};
z1 = ParametricPlot3D[100 x[t], {t, 0, 4 Pi}, PlotRange -> plotRange];
hel = Import["ExampleData/helicopter.dxf.gz", 
   ViewPoint -> {10, 10, 10}, AlignmentPoint -> {80, 80, 80}];

zz = Table[
   Show[z1, 
    Graphics3D[
     Translate[Rotate[First[hel], t + Pi/2, {0, 0, 1}], 100 x[t]]], 
    PlotRange -> plotRange], {t, 0, 4 Pi, 4 Pi/15}];
Export["c:\\test.gif", zz, "DisplayDurations" -> .5]

(* Or
 Animate[Show[z1, 
   Graphics3D[
    Translate[Rotate[First[hel], t + Pi/2, {0, 0, 1}], 100 x[t]]], 
   PlotRange -> plotRange], {t, 0, 4 Pi}]

enter image description here

Можно рассчитать вращение гели, используя производные кривой. Лень сейчас делать это.

Редактировать

Для соблюдения правил украшения дома Sjoerd:

enter image description here

...