Zeichnen eines Wellbandes auf einem 3D-Plot
Ich wurde beauftragt, den folgenden Code zu schreiben:
Clear[P, t];
P[t_] = {-t, t, (1/2) t (8 - t)};
arch =
ParametricPlot3D[P[t], {t, 0, 8},
Axes -> Automatic, AxesLabel -> {"x", "y", "z"}, PlotRange -> All,
Boxed -> False, ViewPoint -> CMView, BoxRatios -> Automatic]
Die Ausgabe des Codes lautet:
Ich wurde dann beauftragt, die Einheitstangensvektoren, die Einheitsnormalen und die binormalen Vektoren mit dem folgenden Code zu erhalten:
Clear[P, x, y, z, t, unittan, mainunitnormal, binormal];
P[t_] = {-t, t, (1/2) t (8 - t)};
curve = ParametricPlot3D[Evaluate[P[t]], {t, 0, 8}];
unittan[t_] = P'[t]/Sqrt[P'[t] . P'[t]];
unittanvectors = Table[Vector[unittan[t], Tail -> P[t]], {t, 0, 8, 0.5}];
mainunitnormal[t_] = N[unittan'[t]/Sqrt[Expand[unittan'[t] . unittan'[t]]]];
mainnormalvectors =
Table[
Vector[mainunitnormal[t], Tail -> P[t], VectorColor -> Red],
{t, 0, 8, 0.5}];
binormal[t_] = N[Cross[unittan[t], mainunitnormal[t]]];
binormalvectors =
Table[Vector[binormal[t], Tail -> P[t], VectorColor -> Red], {t, 0, 8, 0.5}];
everything =
Show[curve, unittanvectors, mainnormalvectors, binormalvectors,
ViewPoint -> CMView, PlotRange -> All, BoxRatios -> Automatic,
AxesLabel -> {"x", "y", "z"}]
welches das folgende Diagramm mit Vektoren erzeugt:
Ich werde jetzt gebeten, ein zwei Einheiten breites Band zu zeichnen, dessen Mittelkurve mit der oben dargestellten Kurve übereinstimmt. Wenn möglich, wellen Sie das Farbband. Der Hinweis, der gegeben wurde, war zu verwenden binormal[t].
Eine der von mir erstellten Darstellungen verwendete den folgenden Code:
ParametricPlot3D[P[t] + s mainunitnormal[t] + Cos[3 s] binormal[t],
{t, 0, 8}, {s, -Pi, Pi},
PlotPoints -> {15, 15}, ViewPoint -> CMView, BoxRatios -> Automatic,
AxesLabel -> {"x", "y", "z"}]
Entspricht mein Grundstück den Anforderungen der zugewiesenen Aufgabe? Wie kann ich außerdem sicherstellen, dass das Farbband nur zwei Einheiten breit ist?
Antworten
Wir können die Berechnung durch Verwendung vereinfachen FrenetSerretSystemund konstruieren einen parametrischen Volumenkörperbereich.
$$ P(t)+ (0,s,\cos3s).(T(t),N(t),B(t))+(0,0,h).(T(t),N(t),B(t))$$
Hier $$0 \leq t \leq 8, -\pi\leq s \leq \pi, -1\leq h\leq 1$$
P[t] + ({0, s, Cos[3 s]} + {0, 0, h}).{unittanvectors[t], mainunitnormal[t], binormal[t]}
und dann die Grenze der Region unabhängig zeichnen.
Clear["`*"];
P[t_] = {-t, t, (1/2) t (8 - t)};
curve = ParametricPlot3D[Evaluate[P[t]], {t, 0, 8},
PlotStyle -> {Thick, Red}];
{unittanvectors[t_], mainunitnormal[t_], binormal[t_]} =
Last@FrenetSerretSystem[P[t], t];
solid = P[t] + ({0, s, Cos[3 s]} + {0, 0, h}).{unittanvectors[t],
mainunitnormal[t], binormal[t]};
SetOptions[ParametricPlot3D, Mesh -> None, PlotPoints -> 30,
Boxed -> False, Axes -> False, ViewPoint -> {-2.37, -0.52, -2.35}];
i = ParametricPlot3D[solid /. {h -> 1}, {t, 0, 8}, {s, -Pi, Pi},
PlotStyle -> Cyan];
j = ParametricPlot3D[solid /. {h -> -1}, {t, 0, 8}, {s, -Pi, Pi},
PlotStyle -> Purple];
u = ParametricPlot3D[solid /. {t -> 0}, {s, -Pi, Pi}, {h, -1, 1},
PlotStyle -> Yellow];
v = ParametricPlot3D[solid /. {t -> 8}, {s, -Pi, Pi}, {h, -1, 1},
PlotStyle -> Yellow];
p = ParametricPlot3D[solid /. {s -> -Pi}, {t, 0, 8}, {h, -1, 1},
PlotStyle -> Blue];
q = ParametricPlot3D[solid /. {s -> Pi}, {t, 0, 8}, {h, -1, 1},
PlotStyle -> Blue];
Show[i, j, u, v, p, q]