\mnb150ÿ{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 System;}{\f3\fswiss\fprq2 Arial;}{\f4\fmodern\fprq1 Courier New;}{\f5\froman\fprq2 Times New Roman;}}
{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green0\blue255;\red0\green128\blue0;}
\deflang1031\pard\ri4\plain\f4\fs20\cf0\b ________________________________________________________________________________
\par
\par \plain\f4\fs20\cf0 Inhalt....: 3D-Polygone f\'fcllen: N-Eck, Tetraeder und Quader (Grafik)
\par Kategorie.: Grafik
\par Mathematik: Grafik
\par MuPAD.....: 3.1.1
\par Datum.....: 2005-07-04
\par Autoren...: Andreas Sorgatz
\par Funktionen: plot, plot::SurfaceSet, MeshListType, TriangleFan, plot::Polygon3d
\par Funktionen: Closed, MeshVisible, PointsVisible
\par \plain\f4\fs20\cf0\b ________________________________________________________________________________
\par \plain\f3\fs28\cf0
\par \plain\f3\fs40\cf0 3D-Polygone f\'fcllen: N-Eck, Tetraeder und Quader
\par \plain\f3\fs28\cf0\b
\par \plain\f3\fs24\cf3 Dieses Arbeitsblatt demonstriert den Einsatz von MuPAD Grafikfunktionen und Grafikoptionen
\par anhand eines Beispiels.
\par \plain\f3\fs24\cf0
\par Nahezu beliebige 3D-Fl\'e4chen k\'f6nnen in MuPAD mittels der Funktion \plain\f4\fs28\cf1 plot::SurfaceSet\plain\f3\fs24\cf0
\par unter Angabe von Gitterpunkten (Mesh) gezeichnet werden. Die Gitterpunkte m\'fcssen dabei die
\par Fl\'e4che entweder in Dreiecke (\plain\f4\fs28\cf1 Triangle,TriangleFan,TriangleStrip\plain\f3\fs24\cf0 ) oder in
\par Vierecke (\plain\f4\fs28\cf1 Quads,QuadStrip\plain\f3\fs24\cf0 ) zerlegen. \plain\f4\fs28\cf1 plot::SurfaceSet\plain\f3\fs24\cf0 bietet eine Low-Level
\par Schnittstelle zur 3D-Grafik und ist daher etwas "technisch".
\par
\par 3D-Polygone, die konvexe N-Ecke beschreiben, lassen sich sehr einfach und effizient \'fcber den
\par Netztyp Dreieckf\'e4cher (\plain\f4\fs28\cf1 MeshListType=TriangleFan\plain\f3\fs24\cf0 ) realisieren. Wir definieren daf\'fcr
\par zun\'e4chst die Liste der Eckpunkte eines schr\'e4g im Raum stehenden Sechsecks:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}Eckpunkte:= [
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 [ 3, 0, 0],
\par [ 2, 2, 2],
\par [ 0, 3, 3],
\par [-2, 2, 2],
\par [-3, 0, 0],
\par [-2,-2, -2],
\par [ 0,-3, -3],
\par [ 2,-2, -2]
\par ]
\par
\par \pard\ri4\plain\f3\fs24\cf0 Wir zeichnen das Seckseck zun\'e4chst als geschlossenes (\plain\f4\fs28\cf1 Closed\plain\f3\fs24\cf0 ) 3D-Polygon:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::Polygon3d(Eckpunkte,Closed)):
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1
\par \pard\ri4\plain\f3\fs24\cf0 Im folgenden zeichnen wir die Fl\'e4che des Sechsecks mittels \plain\f4\fs28\cf1 plot::SurfaceSet\plain\f3\fs24\cf0 . Vor der\plain\f3\fs24\cf0\ul
\par Version MuPAD 3.4\plain\f3\fs24\cf0 akzeptiert diese Funktion leider nur eine flache Liste von Gitterkoordinaten,
\par so dass wir die Liste der Eckpunkte zuvor konvertieren m\'fcssen:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Eckpunkte, op), // map f\'fcr MuPAD <3.4
\par MeshListType = TriangleFan
\par )
\par ):
\par
\par \pard\ri4\plain\f3\fs24\cf0 Um sichtbar nachzuvollziehen, wie die Fl\'e4che des Sechsecks intern als Dreieckf\'e4cher realisiert
\par wurde, schalten wir die Optionen \plain\f4\fs28\cf1 MeshVisible\plain\f3\fs24\cf0 und \plain\f4\fs28\cf1 PointsVisible\plain\f3\fs24\cf0 ein. Dabei werden
\par die Linien und Eckpunkte der Dreiecke mit eingezeichnet:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Eckpunkte, op), // map f\'fcr MuPAD <3.4
\par MeshListType = TriangleFan,
\par MeshVisible, PointsVisible
\par )
\par ):
\par
\par \pard\ri4\plain\f3\fs24\cf0 Soll das Seckseck einen sichtbaren Rand bekommen, so kombiniert man die beiden oben be-
\par nutzten Funktionen wie folgt:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Eckpunkte, op), // map f\'fcr MuPAD <3.4
\par MeshListType = TriangleFan
\par ),
\par plot::Polygon3d(
\par Eckpunkte,
\par Closed,
\par LineColor = RGB::Black
\par )
\par ):
\par
\par \pard\ri4\plain\f3\fs24\cf0 \'c4hnlich k\'f6nnen wir auch 3D-K\'f6rper erstellen. Beispielsweise einen Platonischen K\'f6rper, das
\par Tetraeder, das aus Dreiecksfl\'e4chen besteht. Wir definieren zun\'e4chst wieder die Gitterpunkte
\par in Form einer Liste Dreieckskoordinaten:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}Dreiecke:= [
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 [-1.5, -1.5, 1.4, 0.0, 1.7, 1.4, 1.5, -1.5, 1.4],
\par [-1.5, -1.5, 1.4, 1.5, -1.5, 1.4, 0.0, 0.0, -1.4],
\par [ 1.5, -1.5, 1.4, 0.0, 1.7, 1.4, 0.0, 0.0, -1.4],
\par [ 0.0, 1.7, 1.4, -1.5, -1.5, 1.4, 0.0, 0.0, -1.4]
\par ]
\par
\par \pard\ri4\plain\f3\fs24\cf0 Da es sich diesmal nicht um eine F\'e4cherstruktur, sondern einzelne Dreiecke handelt, wird als
\par Netztyp \plain\f4\fs28\cf1 Triangles\plain\f3\fs24\cf0 gew\'e4hlt:
\par \plain\f3\fs28\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Dreiecke, op), // map f\'fcr MuPAD <3.4
\par MeshListType = Triangles
\par )
\par ):
\par
\par \pard\ri4\plain\f3\fs24\cf0 Auch hier k\'f6nnen wir die Netzlinien zuschalten, die in diesem Fall genau den Rand des K\'f6rpers
\par definieren:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Dreiecke, op), // map f\'fcr MuPAD <3.4
\par MeshListType = Triangles,
\par MeshVisible
\par )
\par ):
\par \pard\ri4\plain\f3\fs24\cf0 Ein Quader wird entsprechend wie folgt realisiert:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}Quader := [
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 [-1,-1,-1], [ 1,-1,-1], [ 1, 1,-1], [-1, 1,-1],
\par [-1,-1,-1], [-1,-1, 1], [-1, 1, 1], [-1, 1,-1],
\par [ 1,-1,-1], [ 1,-1, 1], [ 1, 1, 1], [ 1, 1,-1],
\par [-1,-1,-1], [-1,-1, 1], [ 1,-1, 1], [ 1,-1,-1],
\par [-1, 1,-1], [-1, 1, 1], [ 1, 1, 1], [ 1, 1,-1],
\par [-1,-1, 1], [ 1,-1, 1], [ 1, 1, 1], [-1, 1, 1]
\par ]:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}plot(plot::SurfaceSet(
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 map(Quader, op), // map f\'fcr MuPAD <3.4
\par MeshListType = Quads,
\par MeshVisible
\par )
\par ):
\par
\par \pard\ri4\plain\f3\fs24\cf0\b Anmerkungen zu \plain\f4\fs28\cf1 plot::SurfaceSet\plain\f3\fs24\cf0\b :
\par \plain\f3\fs24\cf0
\par - MuPAD arbeitet mit einem Beleuchtungsmodell, das auch Reflexe darstellt. Um Fl\'e4chen und
\par K\'f6rper sauber darzustellen, sollte immer spezifiziert werden wo "innen" und "aussen" einer
\par Fl\'e4che ist. In der Regel gibt man die Koordinaten einer ebenen Teilfl\'e4che (Dreieck | Viereck)
\par dazu gegen den Uhrzeigersinn, also mathematisch positiver Reihenfolge an. Alternativ k\'f6nnen
\par aber auch Normalenvektoren definiert werden, mehr dazu auf der Hilfeseite zu dieser Funktion.
\par
\par - Ab Version MuPAD Pro 3.4 k\'f6nnen die Koordinaten der Gitternetzwerke (\plain\f4\fs28\cf1 MeshList\plain\f3\fs24\cf0 ) frei
\par in bis zu zwei-stufigen Unterlisten gruppiert werden. Also beispielsweise jeder Punkt als eine
\par Punktliste [x,y,z] und beliebige viele Punkte wieder in einer Elementliste, die dann in einer
\par Gesamtliste zusammengefasst werden. Dies ist \'fcbersichtlicher und h\'e4ufig auch bequemer.
\par
\par - Die Funktion erlaubt auch animierte Gitternetzwerke (\plain\f4\fs28\cf1 MeshList\plain\f3\fs24\cf0 ). Dazu wird ein Gitternetz
\par definiert in dem ein Parameter 'a' auftritt, als Zusatzargument erh\'e4lt die Funktion dann noch
\par den Animationsbereich, beispielsweise a=0..PI. Als Beispiel ziehen wir an einer Ecke des
\par Quaders:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs28\cf1 {\pntext\f1\'b7\tab}Quader := [
\par \pard\li600\ri1\fi-300\plain\f4\fs28\cf1 -1,-1,-1, 1,-1,-1, 1, 1,-1, -1, 1,-1,
\par -1,-1,-1, -1,-1, a, -1, 1, 1, -1, 1,-1,
\par 1,-1,-1, 1,-1, 1, 1, 1, 1, 1, 1,-1,
\par -1,-1,-1, -1,-1, a, 1,-1, 1, 1,-1,-1,
\par -1, 1,-1, -1, 1, 1, 1, 1, 1, 1, 1,-1,
\par -1,-1, a, 1,-1, 1, 1, 1, 1, -1, 1, 1
\par ]:
\par plot(plot::SurfaceSet(
\par Quader, MeshListType = Quads,
\par MeshVisible, PointsVisible,
\par a=2..1,
\par TimeRange = 0..1,
\par AnimationStyle = BackAndForth
\par )
\par ):
\par
\par \pard\ri4\plain\f4\fs20\cf0 ________________________________________________________________________________
\par \plain\f3\fs22\cf3\b
\par Anmerkungen:\plain\f3\fs22\cf3
\par \plain\f3\fs20\cf3\b 1\plain\f3\fs20\cf3 . Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal
\par \plain\f3\fs20\cf3\i MuPAD in Schule und Studium\plain\f3\fs20\cf3 unter: \plain\f3\fs20\cf2 http://schule.mupad.de\plain\f3\fs20\cf3 bzw. \plain\f3\fs20\cf2 http://studium.mupad.de\plain\f3\fs20\cf3 .
\par
\par \plain\f3\fs20\cf3\b 2\plain\f3\fs20\cf3 . Unsere Material Sammlung enth\'e4lt Arbeitsbl\'e4tter zu den Archimedische K\'f6rper. Dort wird die
\par Funktion \plain\f3\fs20\cf1 plot::SurfaceSet\plain\f3\fs20\cf3 ebenfalls eingesetzt.
\par \plain\f4\fs20\cf0 ________________________________________________________________________________
\par \plain\f4\fs28\cf1\b
\par \plain\f5\fs28\cf0
\par }