Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
Hallo Matthias, so schlimm ist es nicht. An der angegebenen Stelle findet man eine Tabelle in (4.3.3.2), wo auch für die Angabe der Fläche als z = f(x, y) die Parametergleichung für die Flächennormale steht, da braucht's man's nicht selber rechnen. Da es gerade regnet let's.do.it.com: bodeN[fn_, {v1_, v10_, v11_}, {v2_, v20_, v21_}, l0_] := Module[{dv1, dv2, o, dfn1, dfn2, x, y, p, pnorm, pp, pic, pf}, (* Check fn *) If[FreeQ[fn[v1, v2], v1] || FreeQ[fn[v1, v2], v2], Print["Function ", fn, " unabhaengig von ", v1, " und/oder ", v2 "! Bye."]; Return[] ]; o = Options[Plot3D, PlotPoints][[1, 2]] - 1; dv1 = (v11 - v10)/o; dv2 = (v21 - v20)/o; dfn1[x_, y_] := Evaluate[D[fn[x, y], x]]; dfn2[x_, y_] := Evaluate[D[fn[x, y], y]]; (* die Fusspunkte des Normalenfeldes - "in" der Flaeche *) p = Flatten[Table[{x, y, fn[x, y]}, {x, v10, v11, dv1}, {y, v20, v21, dv2}], 1]; (* die Kopfpunkte des Normalenfeldes *) pnorm = Flatten[Table[ l0/Sqrt[ dfn1[x, y]^2 + dfn2[x, y]^2 + 1.], {x, v10, v11, dv1}, {y, v20, v21, dv2}], 1]; pp = pnorm*Flatten[ Table[{dfn1[x, y], dfn2[x, y], -1}, {x, v10, v11, dv1}, {y, v20, v21, dv2}], 1]; (* das l0 normierte Normalenrichtungsfeld mit Pfeilen *) pf = ListPlotVectorField3D[Transpose[{p, pp}], VectorHeads -> True, DisplayFunction -> Identity]; (* die Flaeche z = fn[v1, v2] selbst *) pic = Plot3D[fn[v1, v2], {v1, v10, v11}, {v2, v20, v21}, DisplayFunction -> Identity]; (* Anzeige *) Show[{pic, pf}, DisplayFunction -> $DisplayFunction] ] /; l0 != 0 && v10 < v11 && v20 < v21 && AtomQ[v1] && AtomQ[v2] && ! StringMatchQ[ToString[v1], ToString[v2]] Also, für eine gegebene Funktion fn rechnet man die Werte auf einem Raster aus (Liste p), dann die "Enden" der Normalenvektoren (Liste pp), gibt das bei ListPlotVectorField3D ab, zeichnet noch die Fläche selber und that's it. Mit den pyramidalen durchsichtigen VectorHeads werden Sie nicht wirklich froh sein, ich weiss nicht, ob das -- schöne -- aufragende Pfeile sind. Dann kann man noch fummeln an den BoxRatios ... damits auch senkrecht aussieht. Das nb ist im Anhang. Gruss Udo. Matthias.Bode@XXXXXXX.de schrieb: > Verehrte Kollegen, > > ich habe eine Funktion in den Variablen x1 und y1: > > Out[27]= > 19.74211746962547 - 61.78321746073334* > <snip> > > 1.Wie lassen sich für diese Funktion Normalenvektoren (vgl. > Bronstein-Semendjajew, 24. Aufl. 1982, 4.3.3.2. Tangentialebene und > Flächennormale) für diverse Punkte berechnen? > 2.Wie kekomme ich die Vektoren als schöne, aufragende Pfeile auf die Fläche? > > Meine Versuche mit Calculus`VectorAnalysis` und PlotVectorField3D &c. > scheiterten kläglich.
fnormal.nb
Description: Mathematica Notebook document
Frühere | Chronologischer Index | Spätere | ||
Vorherige | Thematischer Index | Nächste |
DMUG-Archiv, http://www.mathematica.ch/archiv.html