Объясните плз код в Wolfram Mathematica

roma73

  (*24) Визуализировать склейку бутылки Клейна из квадрата.Проверить ее \
неориентируемось,протащив вдоль некоторой петли репер так,чтобы он \
изменил ориентацию.*)
{
{Manipulate[If[T < 3 \[Pi]/2,
(*Базис не рисуется*)
If[T > \[Pi],
(*Состоит из 3 частей*)
U = Min[\[Pi]/2, Max[0, 3 \[Pi]/2 - T]];
Show[
{
ParametricPlot3D[Subscript[\[Omega],
1], {u, 0, \[Pi]}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, \[Pi], 3 \[Pi]/2 - U}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, 3 \[Pi]/2 + U, 2 \[Pi]}, {v, 0, 2 \[Pi]},
Mesh -> None, PlotStyle -> Blue]
},
PlotRange -> All, Axes -> False, Boxed -> False,
SphericalRegion -> True],
(*Состоит из одной части*)
ParametricPlot3D[t = Max[0, \[Pi]/2 - T];
a = Min[\[Pi]/2, Max[0, \[Pi] - T]];
{6 Cos[u] (1 + Sin[u])*Cos[a] +
4 (1 - Cos[u]/2) Cos[u] Cos[v]) +
10*Sin[a]*(Cos[u]*(1 - Sin[t]) -
u*Sin[t], 16 Sin[u] + 4 (1 - Cos[u]/2) Sin[u] Cos[v]) +
10*Sin[a]*(1 - Sin[u]*(1 - Sin[t]
4 (1 - Cos[u]/2) Sin[v]*(1 - Sin[t]) - v*Sin[t]},
{u, 0, \[Pi]},
{v, Min[\[Pi]/2, Max[0, \[Pi] - T]](*Subscript[v, 0]*
2*\[Pi] - Min[\[Pi]/2, Max[0, \[Pi] - T]](*Subscript[v, 0]*)},
Mesh -> None, Axes -> False, Boxed -> False,
SphericalRegion -> True, PlotStyle -> Blue]


],

(*T == 3\[Pi]/2, с движением базиса, ползунки активны*)
(*Рисуем бутылку из двух частей, базис и две кривые*)
If[Subscript[u, 0] < \[Pi],
(*Точка касания находится на первой половинке*)
Subscript[S,
0] = {v -> (5/2 - Subscript[v, 0]/\[Pi]) Subscript[u, 0] +
Subscript[v, 0], u -> Subscript[u, 0]};
S = {v -> bb, u -> Subscript[u, 0]};
P = Subscript[\[Omega], 1] /. S;
Subscript[P, 0] = Subscript[\[Omega], 1] /. Subscript[S, 0];
(*Считаем базисные векторы*)
Subscript[e, 1] = Subscript[d1, u] /. S;
Subscript[e, 10] = Subscript[d1, u] /. Subscript[S, 0];
Subscript[e, 2] = Subscript[d1, v] /. S;
Subscript[e, 20] = Subscript[d1, v] /. Subscript[S, 0];
Subscript[e, 3] =
Subscript[e, 1]\[Cross]Subscript[e, 2];
Subscript[e, 30] = Subscript[e, 10]\[Cross]Subscript[e, 20];
If[Norm[Subscript[e, 1]] == 0, Subscript[n, 1] = 1,
Subscript[n, 1] = 1/5*Norm[Subscript[e, 1]]];
If[Norm[Subscript[e, 2]] == 0, Subscript[n, 2] = 1,
Subscript[n, 2] = 1/5*Norm[Subscript[e, 2]]];
If[Norm[Subscript[e, 3]] == 0, Subscript[n, 3] = 1,
Subscript[n, 3] = 1/5*Norm[Subscript[e, 3]]];
Subscript[a, 1] = {P, P + Subscript[e, 1]/Subscript[n, 1]};
Subscript[a,
10] = {Subscript[P, 0],
Subscript[P, 0] + Subscript[e, 10]/Subscript[n, 1]};
Subscript[a, 2] = {P, P + Subscript[e, 2]/Subscript[n, 2]};
Subscript[a,
20] = {Subscript[P, 0],
Subscript[P, 0] + Subscript[e, 20]/Subscript[n, 2]};
Subscript[a, 3] = {P, P + Subscript[e, 3]/Subscript[n, 3]};
Subscript[a,
30] = {Subscript[P, 0],
Subscript[P, 0] + Subscript[e, 30]/Subscript[n, 3]};
Show[{
(*бутылка*)
ParametricPlot3D[Subscript[\[Omega],
1], {u, 0, \[Pi]}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, \[Pi], 3 \[Pi]/2}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, 3 \[Pi]/2, 2 \[Pi]}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
(*траектория*)
ParametricPlot3D[
Subscript[\[Omega],
1] /. {v -> (5/2 - Subscript[v, 0]/\[Pi]) t + Subscript[v,
0], u -> t}, {t, 0, \[Pi]}],
ParametricPlot3D[
Subscript[\[Omega],
2] /. {v -> (5/2 - Subscript[v, 0]/\[Pi]) t + Subscript[v,
0], u -> t}, {t, \[Pi], 2 \[Pi]}],
(*дополнительная окружность*)
ParametricPlot3D[
Subscript[\[Omega], 1] /. {v -> t, u -> Subscript[u, 0]}, {t,
0, 2 \[Pi]}],
(*векторы*)
Graphics3D[{Blue, Arrow[Subscript[a, 1]]}],
Graphics3D[{Red, Arrow[Subscript[a, 2]]}],
Graphics3D[{Black, Arrow[Subscript[a, 3]]}] ,

Graphics3D[{Blue, Arrow[Subscript[a, 10]]}],
Graphics3D[{Red, Arrow[Subscript[a, 20]]}],
Graphics3D[{Black, Arrow[Subscript[a, 30]]}]
},
PlotRange -> All, Axes -> False, Boxed -> False,
SphericalRegion -> True
],
(*Точка касания находится на второй половинке*)
S = {v -> (5/2 - Subscript[v, 0]/\[Pi]) Subscript[u, 0] +
Subscript[v, 0], u -> Subscript[u, 0]};

P = Subscript[\[Omega], 2] /. S;
(*Считаем базисные векторы*)
Subscript[e, 1] = Subscript[d2, u] /. S;
Subscript[e, 2] = Subscript[d2, v] /. S;
Subscript[e, 3] = Subscript[e, 1]\[Cross]Subscript[e, 2];
If[Norm[Subscript[e, 1]] == 0, Subscript[n, 1] = 1,
Subscript[n, 1] = 1/5*Norm[Subscript[e, 1]]];
If[Norm[Subscript[e, 2]] == 0, Subscript[n, 2] = 1,
Subscript[n, 2] = 1/5*Norm[Subscript[e, 2]]];
If[Norm[Subscript[e, 3]] == 0, Subscript[n, 3] = 1,
Subscript[n, 3] = 1/5*Norm[Subscript[e, 3]]];
Subscript[a, 1] = {P, P + Subscript[e, 2]/Subscript[n, 2]};
Subscript[a, 2] = {P, P + Subscript[e, 2]/Subscript[n, 2]};
Subscript[a, 3] = {P, P + Subscript[e, 3]/Subscript[n, 3]};
Show[{
(*бутылка*)
ParametricPlot3D[Subscript[\[Omega],
1], {u, 0, \[Pi]}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, \[Pi], 3 \[Pi]/2}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
ParametricPlot3D[Subscript[\[Omega],
2], {u, 3 \[Pi]/2, 2 \[Pi]}, {v, 0, 2 \[Pi]}, Mesh -> None,
PlotStyle -> Blue],
(*траектория*)
ParametricPlot3D[
Subscript[\[Omega],
1] /. {v -> (5/2 - Subscript[v, 0]/\[Pi]) t + Subscript[v,
0], u -> t}, {t, 0, \[Pi]}],
ParametricPlot3D[
Subscript[\[Omega],
2] /. {v -> (5/2 - Subscript[v, 0]/\[Pi]) t + Subscript[v,
0], u -> t}, {t, \[Pi], 2 \[Pi]}],
(*дополнительная окружность*)
ParametricPlot3D[
Subscript[\[Omega], 2] /. {v -> t, u -> Subscript[u, 0]}, {t,
0, 2 \[Pi]}],
(*векторы*)
Graphics3D[{Blue, Arrow[Subscript[a, 1]]}],
Graphics3D[{Red, Arrow[Subscript[a, 2]]}],
Graphics3D[{Black, Arrow[Subscript[a, 3]]}]
},
PlotRange -> All, Axes -> False, Boxed -> False,
SphericalRegion -> True
]
]
],
{{T, 3*\[Pi]/2, "Склейка "}, 0.001, 3*\[Pi]/2},
Delimiter,
"Двигаем\n",
{{Subscript[u, 0], 0, "Доп. окружность "}, 0, 2 \[Pi],
Enabled -> Dynamic[T == 3 \[Pi]/2]},
{{Subscript[v, 0], 0.001, "Кривую "}, 0, 2 \[Pi],
Enabled -> Dynamic[T == 3 \[Pi]/2]},
{{bb, 0, "Базис по окружности"}, 0, 2 \[Pi],
Enabled -> Dynamic[T == 3 \[Pi]/2]},
{{bbb, 0, "Базис по окружности"}, 0, 2 \[Pi],
Enabled -> Dynamic[T == 3 \[Pi]/2]},
Initialization :> (
part1x = 6 Cos[u] (1 + Sin[u]) + 4 (1 - Cos[u]/2) Cos[u] Cos[v];
part1y = 16 Sin[u] + 4 (1 - Cos[u]/2) Sin[u] Cos[v];
part1z = 4 (1 - Cos[u]/2) Sin[v];
part2x = 6 Cos[u] (1 + Sin[u]) - 4 (1 - Cos[u]/2) Cos[v];
part2y = 16 Sin[u] + 4 (1) Sin[u];
part2z = 4 (1 - Cos[u]/2) Sin[v];
Subscript[\[Omega], 1] = {part1x, part1y, part1z};
Subscript[\[Omega], 2] = {part2x, part2y, part2z};
Subscript[d1, u] = D[Subscript[\[Omega], 1], u];
Subscript[d1, v] = D[Subscript[\[Omega], 1], v];
Subscript[d2, u] = D[Subscript[\[Omega], 2], u];
Subscript[d2, v] = D[Subscript[\[Omega], 2], v];
)]},
{\[Placeholder]}
}

Что за параметр Т? U? что за базис по окружности? И вообще, как программа работает, объясните плиииз. очень надо

Serg1912

пришли
Wolfram Mathematica на gmail.com - объясню

roma73

эта прога весит 500 метров....на скинется(

Serg1912

разбей раром

Xephon

Используйте Яндекс-диск. http://disk.yandex.ru

roma73

я на закину, в раздел проги, или софт

Big_Bob

Какую версию? Я слышал уже восьмая вышла..

Serg1912

Wolfram Mathematica 7 выложи в иннет

Serg1912

логин rutracker-пароль
в приват
Оставить комментарий
Имя или ник:
Комментарий: