Anwendungsbild | Beschreibung des Vorgehens |
---|---|
|
Voransicht des Ergebnisses von Bild 11 Das letzte Bild auf dieser Seite unten zeigt den Endzustand der Anleitung zum Erzeugen des PentagonDodekaeders, das ihr unten seht. Da ein Isokaeder bei der Berechnung so nebenbei mit berechnet wird, wird es dann auch gleich angezeigt, da alle Punkte schon da sind. Wenn Du die Drehung an beliebiger Stelle anhalten möchtest, dann habe ich für diesen Zweck den Button (die Schaltfläche) "Drehung" die dort zur Verfügung gestellt, auf den/die geklickt werden kann, um zu stoppen. Darauf wird auch mit dem Pfeilkästchen hingewiesen. Beim Laden der Webseite ist ist die Animation im Automatikmodus. Das heißt, dass am Ende der Animation die Webseite automatisch neu geladen wird, wodurch die Animation wieder von vorn beginnt. Wenn die Animation einmal per Button beendet wird, dann ist der Automatikmodus ausgeschaltet und die Animation kann genau an der gleichen Stelle fortgesetzt werden, endet jedoch von allein. Ein 2D/3D-Demospiel gibt es auf "Farbschach.de -''Pentadreh''". |
|
Bild 1 Ausgangspunkt ist die Tatsache, dass in einem Zwölffach-Fünfeck-Objekt (Pentagon-Dodekaeder) auch ein Würfel enthalten ist, wie das auch auf der mit dem nebenstehenden, gelb markierten Link zur Webseite beschrieben ist. Also definieren wir zuerst die acht Eckpunkte eines Würfels, der Einfachkeit halber 2 Quadrate hintereinander (im Bild versetzt gezeigt). Dabei sind die X-(horizontal) und Y-Richtung (vertikal) sichtbar und die Z-Richtung, sozusagen als Draufsicht, nach vorn bzw. hinten: P1=(-1,+1, -1); P2=(+1,+1, -1); P3=(+1,-1,-1); P4=(-1,-1, -1); P5=(-1,+1,+1); P6=(+1,+1,+1); P7=(-1,-1,+1); P8=(+1,-1,+1); (Später werden alle Punkte etwas um die X- und Y-Achse gedreht, damit der Würfel besser in seiner 3D-Form erkennbar sein wird.) Im Quelltext dieser Webseite finden Sie den Ausgangsprogrammtext, der in 2 Bereichen ( Anzeige + Programm ) weiterentwickelt wird. Im oberen Quelltextbereich stehen die Anzeigetexte, unten Programmcode, der für die programmatisch erstellten Objekte/Zeichnungen benutzt wird. Der erste Teil steht in einer Tabelle mit 2 Spalten, danach JavaScript-Code. |
|
Bild 2 Es macht es uns leichter, dass sowohl der Würfel als auch ein Fünfeck je alle Seiten gleich und zueinander ein festes Größenverhältnis haben. Die Kantenlänge des Würfels ist gleichzeitig die Diagonale des Fünfecks und alle Seiten des Daches, außer der Grundfläche, haben die gleiche Seitenlänge = a , die jeweils sich aus den Kanten des Fünfeckes bilden. Daher können wir die Diagonale d = Kantenlänge des Würfels in ein festes Verhältnis zur Fünfeck-Seitenlänge a setzen und mit Formeln berechnen. Für uns reicht jedoch, wegen des festen Verhältnisses die Formel d = 1,618033988749895 * a ... bzw. ... a = d : 1,618033988749895 Nun zur Frage, wie wir die Eckpunkte des Dachfirstes berechnen. Auch das ist einfacher, als es auf den ersten Blick erscheint: Der Dachfirst ist ja immer genau über dem Mittelpunkt des Würfels. Da der Mittelpunkt bei Null liegt, ist der Eckpunkt bei +a : 2 oder -a : 2 Bleibt die Höhe H für die wir die Formel im Abschnitt Volumen sehen. Dort ist die einfache Formel H=(1/2)a zu finden, also H = 0,5 * a |
|
Bild 3 Da der Würfel regelmäßig ist, gilt die Dachfunktion für alle Seiten, nur, dass die Richtung des Dachfirstes zu den Nachbarn um 90° gedreht ist, wodurch sich im Raum automatisch ein Fünfeck ergibt. Dieses wird z.B. durch die Punkte P6, P9, P10, P2 und P11 gebildet. Die Punkte P2 und P6 ergeben sich aus den Würfeldimensionen und die Punkte P9, P10 und P11 sind Dachfirstpunkte, die wie folgt beispielhaft für die Punkte P9 und P10 berechnet werden: 1.Richtung(x=waagerecht) ist x = 0, weil sie genau über der Mitte liegen 2.Richtung(y=senkrecht) ist y = d : 2 + H = halbe Kantenlänge + Höhe H 3.Richtung(z=vorn/hinten) ist bei P9.z = +a : 2 und bei P10.z = -a : 2 Für den Punkt P11 wäre demnach x = d : 2 + H, y = a :2 und z = 0 So ermitteln wir alle Eckpunkte aus den passenden Richtungswerten, da die Abstände vom Nullpunkt bei einem Würfel überall gleich sind. |
|
Bild 4 Würden wir alle Punkte anzeigen lassen, dann sähen wir auch Punkte, die beim realen Körper unsichtbar wären, weil sie auf der Rückseite liegen. Daher berechnen wir uns auch noch die Mittelpunkte aller Fünfeckflächen, um nur die Flächen zuzeichnen, deren Mittelpunkt für uns sichtbar ist. Um den Mittelpunkt M eines Fünfeckes zu berechnen benötigen wir zuerst die Höhe h des Fünfeckes (z.B. die zwischen den Punkten P11 und P12). P12 liegt dabei genau über dem Nullpunkt und gleichhoch wie P9 und P10. P12.x = P9.x = P10.x , P12.y = 0 und P12.z = 0 , P11-Werte siehe oben. Die Höhe h ist im Verhältnis zu Seitenlänge a: h=[sqrt(5+2*sqrt(5))]/2*a Der Mittelpunkt des Fünfecks liegt nicht auf der Hälfte der Höhe h, sondern wir benötigen den Radius des Innenkreises r als Entfernung von P12 zu M oder den Radius R des Umkreises als Entfernung vom Punkt P11 zu M für die Berechnung, um die Höhe des Fünfecks zu ermitteln. r = [sqrt(25+10*sqrt(5))]/10*a bzw. R = [sqrt(50+10*sqrt(5))]/10*a . Die Formeln dafür finden wir im Link-Abschnitt Herleitung der Formeln. |
|
Bild 5 Die Höhe h des Fünfeckes kann mit h = r+R zur Kontrolle ermittelt werden. Der Höhenunterschied z.B. zwischen P12.y und P11.y ist natürlich geringer, als der sie verbindende Wert von h, weil die Punkte räumlich versetzt sind. Jedoch ist es so, dass sich die Höhenänderung bis zum Mittelpunkt M im gleichen Verhältnis ändert, wie h zur Differenz P12 minus P11 steht. Also können wir die x-, y- und z-Werte des Mittelpunktes M ermitteln, indem wir z.B. das kleinere Verhältis von r zu h mal (P12 minus P11) nehmen und den errechneten Unterschiedswert vom Punkt P12 abziehen. M.x = P12.x - (P12.x - P11.x) / h * r , M.y = P12.y - (P12.y - P11.y) / h * r und auch M.z = P12.z - (P12.z - P11.z) / h * r in der gleichen Form. ( Auf die gleiche Art könnte auch der Wert von R benutzt werden, der ja nur die Entfernung des Mittelpunktes M vom Punkt P11 darstellt. Also z.B. M.y = P11.y + (P12.y - P11.y) / h * r, da M.y größer als P11.y ist.) Ausgehend von einer Dachmitte und dem gegenüberliegenden Eckpunkt des Fünfecks können wir alle Mittelpunkte aller Fünfecke berechnen. |
|
Bild 6 Nun berechnen wir alle Punkte des Pentagondodekaeders (Quelle2.htm). Wenn wir uns das Ergebnis aller errechneten Punkte anzeigen lassen, dann sehen wir, dass das Pentgondodekaeder auf einer Kante steht. Das ist natürlich nicht so schön, weil es praktisch selten so zusehen und es auch beim Drehen anschaulicher ist, wenn es auf einer Fläche steht. Denn drehe ich ein flach liegendes Fünfeck um seinen Mittelpunkt, dann ist einerseits der Höhenwert jedes Punktes immer gleich und andererseits, nimmt bei einer Drehung um 72 Grad, der Kordinaten-Wert jedes Punktes den Wert des Punktes an, der vorher an diesem diesem Platz war. Damit das Objekt auf einer Fläche steht, sollten wir es zuerst kippen. Das kann rechts oder links geschehen, da der Körper ja regelmäig ist Wir können Formeln der 3D-Transformation z.B. von hier benutzen, da die Z-Achse parallel zur Kante liegt, also sich die Z-Werte sich bei der Drehung nicht ändern und wir damit auf einer Ebene drehen, wie bei 2D. Wir nehmen denmach die beiden Formeln nach "Rotation um z -Achse:" |
| Bild 7 Während ich die Bilder 1 bis 6 per Hand räumlich gezeichnet habe, wurde in Bild7 die Berechnung der Punkte und das Zeichen programmiert. Der Drehwinkel Aplha berechnet sich durch das rechtwinklige Dreieck mit H (Dreicksseite a) und mit d:2 (Dreicksseite b).Formel+Ergebnis hier Ich habe der Einfachkeit halber dort die Werte einfach eingetragen: Höhe H = Seite a = 0,5 * a und d:2 = b = 0,809016994374945 * a als Ergebnis erhielt ich Aplha = 31,71747441146108°, was auch der Drehwinkel ist, da die Seite d:2 und die Grundfläche parallel liegen. Um nicht alle Punkte einzeln drehen müssen, nutzen wir eine Funktion. Mit allen Punkten wird diese aufgerufen, um zum neuen Platz zu kommen. Die real benutzten Funktionen findet Ihr im Quelltext dieser Seite und in der Beispieldatei Quelle3.html, jeweils im Kommentar nach // erklärt, wenn ihr nach dem Wort function in der Datei sucht. |
|
Bild 8 Die Formeln für die Drehung um die Z-Achse sind in Bild 6 gezeigt. intern sind die Formeln etwas anders, weil der Winkel zwischen Grad und Bogenmaß umgerechnet werden muss, da sin/cos das benutzt. Das Bogenmaß errechne ich so: rad = winkel/180* 3.14159265359 Danach rechne ich mit diesem Wert weiter: cosi = Math.cos(rad) und sinu = Math.sin(rad)*(fak); wobei cosi und sinu auch nur Variablen sind, um die Zwischenwerte zu speichern, mit denen ich dann weiterrechne. Die praktische Formel ist dann also x' = x * cosi - y * sinu; ähnlich oben bzw. y' = x * sinu + y * cosi, weil die Berechnung nur aufgeteilt wurde. Als nächstes drehen wir das Objekt um die Y-Achse, die senkrecht steht. Das obere Objekt in Bild 8 ist um 90° vom unteren Stand Bild 7 abgeleitet. Drehen wir das Objekt 90° um die X-Achse sehen wir die untere Ansicht. Dabei sind die 90°-Drehungen nur beispielhaft ausgewählt. |
Bild 9 Beim Untersuchen des Pentgondodekaeder sind mir 2 Dinge aufgefallen. 1. Außer dem Würfel der die gleichen Eckpunkte wie unser Objekt hat, hat auch ein anderer Körper die gleichen von uns berechneten Punkte: ein Isokaeder ist ein Körper, der immer da einen Eckpunkt hat, wo jedes Fünfeck unseres Objektes seinen Mittelpunkt hat (blaue Eckpunkte). Das Isokaeder entsteht, wenn wir alle Mittelpunkte der 5-Ecke verbinden, aus denen sich ein Pentagondodekaeder zusammensetzt. (blaue Linien). Es besteht insgesamt aus 20 Dreiecken und ist auch sehr regemäßig. Damit können wir beide gemeinsam berechnen bzw. Werte übernehmen. 2. ergibt sich aus der Regelmäßigkeit der beiden Körper, dass er geteilt werden kann und dabei die eine Hälfte genauso groß ist wie die andere. Eine der möglichen Schnittebenen ist mit der brauen Linie eingezeichnet. Jede Linie wird jeweils auf der Hälfte zwischen den Eckpunkten geteilt. Obwohl der eine Körper aus Fünfecken und der andere aus Dreiecken besteht, sind beide durch 6 Schnittebenen teilbar, die anders sind, als die beiden Varianten, die im Abschnitt "Halbierung des Dodekaeders" beschrieben sind. Damit entstehen Verdrehmöglichkeiten ähnlich dem Rubikwürfel, die ich nachfolgend später nur angedeutet zeigen möchte. |
|
Bild 10 Um auch beim Isokaeder nur die sichtbaren Linien auszugeben, sollten wir auch hier für jedes Teil den Mittelpunkt ermitteln. Das ist einfacher, als es beim Fünfeck war, weil wir im oberen Teil von Bild 10 sehen, dass ein Eckpunkt der Fünfecke genau über dem Mittellpunkt PM liegt. Es ist nicht wichtig, welche Werte dieser Mittelpunkt genau hat, weil uns nur die Richtung interessiert, ob PM.z oberhalb der Nullebene liegt. Die braun markierten Fünfecke sind also nur ein Beispiel und Hinweis, dass wir entweder eine Ecke eines Fünfecks nehmen könnten, oder den Punkt, der der Ecke des jeweiligen Fünfecks gegenüber liegt. Ich habe mich für den Punkt entschieden, weil ich den am leichtesten finde, indem ich den gemeinsamen Eckpunkt der drei Fünfecke nehme, die ich ja schon für die Eckpunkte des Dreiecks ermitteln musste. Ein Punkt auf der Hälfte einer Seite ist jeweils z.B.: P12.x=(P1.x+P2.x)/2 . Diese benötigen wir, um die Schnittebenen einzeichnen zu können. In der unteren Zeichnung von Bild 10 sehen wir 3 mögliche Schnitte entsprechend der gemeinsamen Schnittvariante aus Bild 9 oben. Nachfolgend werden alle je 6 möglichen Schnittebenen dargestellt. |
|
|
Bild 11 Jede dieser Schnittebenen ist in einer anderen Farbe dargestellt, die auf der linken Seite durchnummeriert als waagerechter Strich noch einmal angezeigt wird. Dabei sind, wie schon weiter oben angedeutet, sowohl die Schnittebenen der beiden Körper von der Lage her gleich, als auch von der Berechnung, durch die Ermittlung der Halbierenden zwischen den jeweiligen Eckpunkten des Körpers. Wenn Du die Drehung an beliebiger Stelle anhalten möchtest, dann habe ich für diesen Zweck den Button (die Schaltfläche) "Drehung" zur Verfügung gestellt, auf den/die geklickt werden kann, um zu stoppen. Darauf wird auch mit dem Pfeilkästchen hingewiesen. Beim Laden der Webseite ist ist die Animation im Automatikmodus. Das heißt, dass am Ende der Animation die Webseite automatisch neu geladen wird, wodurch die Animation wieder von vorn beginnt. Wenn die Animation einmal per Button beendet wird, dann ist der Automatikmodus ausgeschaltet und die Animation kann genau an der gleichen Stelle fortgesetzt werden, endet jedoch von allein. Ein 2D/3D-Demospiel gibt es auf "Farbschach.de -''Pentadreh''". |