Konzept und Darstellung der nachfolgenden Ergebnisse sind Resultate von durch Studenten ausgeführten Arbeiten - WIR

3D-Brezel

\(\(Aufgabe : \ 
          Umsetzung\ eines\ real\ existierenden\ Modells\ \((\(\*"""räumliche\ Lemniskate\)\)\*""")\)\ in\ eine\ Computergraphik\)

Modellierung

Seitenansicht

Remove["Global`*"]

r[t_] :=  Cos[3  t]; 
x[t_] :=  r[t] Sin[t];  
y[t_] :=  r[t] Cos[t];  
f[t_] := {x[t], y[t]};
ParametricPlot[f[t], {t, 0, 2 Pi}, Ticks -> False, 
        AspectRatio -> Automatic];

Zentrum öffnen

r[t_] :=  1 + 1/3 Cos[3/2 t]; 
x[t_] :=  r[t] Sin[t];  
y[t_] :=  r[t] Cos[t];  
f[t_] := {x[t], y[t]};
ParametricPlot[f[t], {t, 0, 4 Pi}, Ticks -> False, 
        AspectRatio -> Automatic];

Uebertragung in 3D

r[t_] :=  1 + 1/3 Cos[3/2 t]; 
x[t_] :=  r[t] Sin[t];  
y[t_] :=  r[t] Cos[t];  
z[t_] := 0.6  Sin[3/2 t];  
f[t_] := {x[t], y[t], z[t]};
ParametricPlot3D[f[t], {t, 0, 4 Pi}, Ticks -> False, 
        PlotRange -> All, AxesLabel -> {x, y, z}, 
        AspectRatio -> Automatic];

Mantel erstellen

vLen[v_] := Sqrt[v . v]; 
normVec[v_] := v/vLen[v];
getVect90[v_] := {-v[[2]], v[[1]], 
        0}
vT[t_] = normVec[f'[t]];
vN[t_] = normVec[getVect90[vT[t]]];
vB[t_] := Cross[vT[t], vN [t]];

mantel[t_, u_, r_] := 
        f[t] + r (vN[t] Cos[u] + vB[t] Sin[u]);

Graphic

myPlot = 
        ParametricPlot3D[
          Evaluate[mantel[t, u, 0.3]], {t, 0, 4  Pi}, {u, 0, 2  Pi}, 
          PlotRange -> All, AxesLabel -> {x, y, z}, 
          AspectRatio -> Automatic, Axes -> False, Boxed -> False, 
          PlotPoints -> 40];

myPlot = 
        ParametricPlot3D[
          Evaluate[mantel[t, u, 0.1]], {t, 0, 4  Pi}, {u, 0, 2  Pi}, 
          PlotRange -> All, AxesLabel -> {x, y, z}, 
          AspectRatio -> Automatic, Axes -> False, Boxed -> False, 
          PlotPoints -> 60];

Animation

Es esistieren diverse Animationsmethoden. Da nicht immer alles geht, probieren wir:

Do[Plot[Sin[n x], {x, 0, 2  π}], {n, 1, 3, 0.25}];

nn = 10; While[(nn = nn - 1) > 5, Print[nn]]

Animation mit dem 3D-Brezel:

pPl[r1_] := 
        ParametricPlot3D[
          Evaluate[mantel[t, u, r1]], {t, 0, 4  Pi}, {u, 0, 
            2  Pi}];

pPl[0.1];

nn = 20; While[(nn = nn - 1) > 1, pPl[nn/20]]

pPlV[nn_] := 
        ParametricPlot3D[
          Evaluate[mantel[t, u, 0.1]], {t, 0, 4  Pi}, {u, 0, 2  Pi}, 
          ViewPoint -> {nn,  1.840,  0.940}];

nn = 40; While[(nn = nn - 1) > 20, pPlV[nn/20]]

Schläuche

Beispiel 1

Remove["Global`*"];
k=3;
x[t_]=4 Cos[t]; y[t_]:=4 Sin[t];z[t_]:=t;
a[t_,φ_]:= 1;   b[t_,φ_]:= 1; 

v[t_]:={x[t],y[t],z[t]};
κ[t_]:=Sqrt[((v''[t].v''[t])(v'[t].v'[t])-(v'[t].v''[t])^2)/((v'[t]).(v'[t]))^3 ];
tT[t_]:= v'[t]/Sqrt[v'[t].v'[t]];
nN[t_]:= 1/κ[t] 1/Sqrt[v'[t].v'[t]]  D[v'[t] /Sqrt[v'[t].v'[t]],t];
bB[t_]:= Cross[tT[t],nN[t]];
w[t_,φ_]:= v[t]+a[t,φ] Cos[φ] nN[t]+b[t,φ] Sin[φ] bB[t];
Print["κ[k] = ", (κ[t]/.t->k)//N];
Print["T[k] = ", (tT[t]/.t->k)//N];
Print["N[k] = ", (nN[t]/.t->k)//N];
Print["B[k0] = ", (bB[t]/.t->k)//N];
Print["w[k,k] = ", (w[t,φ]/.{t->k,φ->k})//N];
ParametricPlot3D[Evaluate[w[t,φ]],{t,0,2Pi},{φ,0,2Pi}];

Beispiel 2

Remove["Global`*"];

(* Schlauchdefinitionen *)
x[t_]=4 Cos[t]; y[t_]:=4 Sin[t];z[t_]:=t;
a[t_,φ_]:= (Abs[Cos[3t]]+0.2);   b[t_,φ_]:= (Abs[Cos[3t]]+0.2)/2; 

(* Rechnung *)
v[t_]:={x[t],y[t],z[t]};
κ[t_]:=Sqrt[((v''[t].v''[t])(v'[t].v'[t])-(v'[t].v''[t])^2)/((v'[t]).(v'[t]))^3 ];
tT[t_]:= v'[t]/Sqrt[v'[t].v'[t]];
nN[t_]:= 1/κ[t] 1/Sqrt[v'[t].v'[t]]  D[v'[t] /Sqrt[v'[t].v'[t]],t];
bB[t_]:= Cross[tT[t],nN[t]];
w[t_,φ_]:= v[t]+a[t,φ] Cos[φ] nN[t]+b[t,φ] Sin[φ] bB[t];
(* Plot *)
ParametricPlot3D[Evaluate[w[t,φ]],{t,0,2Pi},{φ,0,2Pi}];