Wie zeichnet man das beschriebene Sechseck. Erstellt regelmäßige Polygone, die einen Kreis umgeben. Die Eigenschaften sind einfach und interessant

Wir lernen, ein sechseckiges Prisma in verschiedenen Positionen darzustellen.

Lernen Sie verschiedene Möglichkeiten, ein regelmäßiges Sechseck zu bauen, zeichnen Sie Sechseckzeichnungen und überprüfen Sie, ob sie richtig sind. Zeichne Sechskantprismen aus den Sechsecken.

Betrachten Sie das Sechskantprisma in Abb. 3.52 und seine orthogonalen Projektionen in Abb. 3.53. An der Basis des hexagonalen Prismas (Hexagon) liegen regelmäßige Sechsecke, die Seitenflächen sind identische Rechtecke. Um ein Sechseck perspektivisch korrekt darzustellen, müssen Sie zunächst lernen, seine Basis perspektivisch korrekt darzustellen (Abb. 3.54). Im Sechseck in Abb. 3,55 Peaks sind mit Zahlen von eins bis sechs gekennzeichnet. Wenn Sie die Punkte 1 und 3, 4 und 6 mit vertikalen Linien verbinden, können Sie sehen, dass diese Linien zusammen mit dem Mittelpunkt des Kreises den Durchmesser 5 - 2 in vier gleiche Segmente teilen (diese Segmente sind durch Bögen gekennzeichnet). Gegenüberliegende Seiten eines Sechsecks sind parallel zueinander und eine Linie, die durch seine Mitte verläuft und zwei Scheitelpunkte verbindet (zum Beispiel sind die Seiten 6 - 1 und 4 - 3 parallel zur Linie 5 - 2). Diese Beobachtungen werden Ihnen helfen, das Sechseck perspektivisch zu konstruieren und die Richtigkeit dieser Konstruktion zu überprüfen. Es gibt zwei Möglichkeiten, aus einer Darstellung ein regelmäßiges Sechseck zu konstruieren: anhand des Umkreises und anhand des Quadrats.

Basierend auf dem umschriebenen Kreis. Betrachten Sie Abb. 3.56. Alle Eckpunkte eines regelmäßigen Sechsecks gehören zum Umkreis, dessen Radius gleich der Seite des Sechsecks ist.


Horizontales Sechseck. Zeichnen Sie eine horizontale, freihändige Ellipse, dh den umschriebenen Kreis in der Perspektive. Jetzt müssen Sie sechs Punkte darauf finden, die die Eckpunkte des Sechsecks sind. Zeichnen Sie einen beliebigen Durchmesser des gegebenen Kreises durch seinen Mittelpunkt (Abb. 3.57). Die äußersten Punkte des Durchmessers - 5 und 2, die auf der Ellipse liegen, sind die Eckpunkte des Sechsecks. Um die restlichen Scheitelpunkte zu finden, müssen Sie diesen Durchmesser in vier gleiche Segmente aufteilen. Der Durchmesser ist bereits durch den Mittelpunkt des Kreises in zwei Radien geteilt, es bleibt noch, jeden Radius in zwei Hälften zu teilen. In der perspektivischen Zeichnung werden alle vier Segmente mit dem Abstand zum Betrachter gleichmäßig reduziert (Abb. 3.58). Zeichnen Sie nun durch die Mittelpunkte der Radien - Punkte A und B - Geraden senkrecht zur Geraden 5 - 2. Ihre Richtung können Sie anhand der Tangenten an die Ellipse an den Punkten 5 und 2 ermitteln (Abb. 3.59). Diese Tangenten sind senkrecht zum Durchmesser 5 - 2, und die Linien, die durch die Punkte A und B parallel zu diesen Tangenten gezogen werden, sind ebenfalls senkrecht auf der Linie 5 - 2. Bezeichnen Sie die Punkte, die sich am Schnittpunkt dieser Linien mit der Ellipse ergeben als 1, 3, 4, 6 ( (Siehe Abbildung 3.60) Verbinden Sie alle sechs Eckpunkte mit geraden Linien (Abb. 3.61).

Prüfen Sie die Korrektheit Ihrer Konstruktion auf verschiedene Weise. Bei richtiger Konstruktion schneiden sich die Verbindungslinien der gegenüberliegenden Eckpunkte des Sechsecks im Kreismittelpunkt (Abb. 3.62) und die gegenüberliegenden Seiten des Sechsecks verlaufen parallel zu den entsprechenden Durchmessern (Abb. 3.63). Eine andere Möglichkeit zur Überprüfung ist in Abb. 3.64.

Vertikales Sechseck. In einem solchen Sechseck haben die Verbindungsgeraden 7 und 3, b und 4 sowie Tangenten an den umschriebenen Kreis an den Punkten 5 und 2 eine vertikale Richtung und behalten diese in der perspektivischen Zeichnung bei. Wenn wir also zwei vertikale Tangenten an die Ellipse ziehen, finden wir die Punkte 5 und 2 (Tangentenpunkte). Verbinden Sie sie mit einer geraden Linie und teilen Sie dann den resultierenden Durchmesser 5 - 2 in 4 gleiche Segmente unter Berücksichtigung ihrer perspektivischen Schnitte (Abb. 3.65). Zeichnen Sie vertikale Linien durch die Punkte A und B und suchen Sie an ihrem Schnittpunkt mit der Ellipse die Punkte 1,3,6L4. Verbinden Sie dann die Punkte 1 - 6 in Reihe mit geraden Linien (Abb. 3.66). Prüfen Sie die Korrektheit der Konstruktion des Sechsecks auf die gleiche Weise wie im vorherigen Beispiel.

Die beschriebene Methode zur Konstruktion eines Sechsecks ermöglicht es Ihnen, diese Figur auf der Grundlage eines Kreises zu erhalten, der perspektivisch leichter zu zeichnen ist als ein Quadrat mit bestimmten Proportionen. Daher scheint diese Methode zur Konstruktion eines Sechsecks die genaueste und vielseitigste zu sein. Die auf einem Quadrat basierende Konstruktionsweise macht es einfach, ein Sechseck darzustellen, wenn bereits ein Würfel in der Zeichnung vorhanden ist, also die Proportionen des Quadrats und die Richtung seiner Seiten bestimmt sind.

Basierend auf einem Quadrat. Betrachten Sie Abb. 3.67. Ein Sechseck, das in horizontaler Richtung 5 - 2 in ein Quadrat eingeschrieben ist, ist gleich der Seite des Quadrats und in vertikaler Richtung kleiner als seine Länge.

Vertikales Sechseck. Zeichne perspektivisch ein vertikales Quadrat. Zeichnen Sie eine gerade Linie durch den Schnittpunkt der Diagonalen parallel zu seinen horizontalen Seiten. Teilen Sie das resultierende Segment 5 - 2 in vier gleiche Teile und ziehen Sie vertikale Linien durch die Punkte A und B (Abb. 3.68). Die oberen und unteren Linien des Sechsecks stimmen nicht mit den Seiten des Quadrats überein. Zeichnen Sie sie in einiger Entfernung (1114 a) von den horizontalen Seiten des Quadrats und parallel zu ihnen. Verbindet man die so gefundenen Punkte 1 und 3 mit Punkt 2 und die Punkte 6 und 4 mit Punkt 5, so erhalten wir ein Sechseck (Abb. 3.69).

Das horizontale Sechseck wird in der gleichen Reihenfolge konstruiert (Abb. 3.70 und 3.71).

Diese Bauweise ist nur für Sechsecke mit ausreichender Öffnung geeignet. Wenn die Offenlegung des Sechsecks unbedeutend ist, ist es besser, die Umkreismethode zu verwenden. Sie können die Ihnen bereits bekannten Methoden verwenden, um ein durch ein Quadrat gebautes Sechseck zu testen.

Darüber hinaus gibt es noch eine andere - um einen Kreis um das resultierende Sechseck zu beschreiben (in Ihrer Zeichnung - eine Ellipse). Alle Eckpunkte des Sechsecks müssen zu dieser Ellipse gehören.

Nachdem Sie die Fähigkeiten zum Zeichnen eines Sechsecks gemeistert haben, können Sie sich frei mit dem Zeichnen eines sechseckigen Prismas fortbewegen. Schauen Sie sich das Diagramm in Abb. 3.72, sowie Schemata zur Konstruktion von hexagonalen Prismen auf der Grundlage des umschriebenen Kreises (Abb. 3.73; 3.74 und 3.75) und auf der Grundlage eines Quadrats (Abb. 3.76; 3.77 und 3.78). Zeichnen Sie auf unterschiedliche Weise vertikale und horizontale Sechsecke. Im Bild eines vertikalen Sechsecks sind die Längsseiten der Seitenflächen parallel zueinander vertikale Geraden, und das Grundsechseck ist umso offener, je weiter es von der Horizontlinie entfernt ist. In der Figur eines horizontalen Sechsecks laufen die Längsseiten der Seitenflächen am Fluchtpunkt am Horizont zusammen, und die Öffnung des Grundsechsecks wird umso größer, je weiter es vom Betrachter entfernt ist. Achten Sie bei der Darstellung eines Sechsecks auch darauf, dass die parallelen Flächen beider Basen perspektivisch konvergieren (Abb. 3.79; 3.80).

Das Thema Polygone wird im Lehrplan der Schulen behandelt, aber nicht genügend beachtet. Inzwischen ist es interessant, und das gilt insbesondere für ein regelmäßiges Sechseck oder Sechseck – schließlich haben viele Naturobjekte diese Form. Dazu gehören Waben und mehr. Diese Form wird in der Praxis sehr gut angewendet.

Definition und Konstruktion

Ein regelmäßiges Sechseck ist eine ebene Figur mit sechs gleich langen Seiten und der gleichen Anzahl gleicher Winkel.

Wenn Sie sich an die Formel für die Winkelsumme eines Polygons erinnern

es stellt sich heraus, dass es in dieser Figur 720° entspricht. Da alle Winkel der Figur gleich sind, ist es leicht zu berechnen, dass jeder von ihnen gleich 120 ° ist.

Ein Sechseck zu zeichnen ist ganz einfach, ein Zirkel und ein Lineal reichen dafür aus.

Die Schritt-für-Schritt-Anleitung sieht wie folgt aus:

Wenn Sie möchten, können Sie auf eine Linie verzichten, indem Sie fünf Kreise mit gleichem Radius zeichnen.

Die so erhaltene Figur wird ein regelmäßiges Sechseck sein, was im Folgenden bewiesen werden kann.

Die Eigenschaften sind einfach und interessant

Um die Eigenschaften eines regelmäßigen Sechsecks zu verstehen, ist es sinnvoll, es in sechs Dreiecke zu zerlegen:

Dies wird in Zukunft helfen, seine Eigenschaften klarer darzustellen, von denen die wichtigsten sind:

  1. Durchmesser des umschriebenen Kreises;
  2. Durchmesser des eingeschriebenen Kreises;
  3. Quadrat;
  4. Umfang.

Der umschriebene Kreis und die Möglichkeit der Konstruktion

Um das Hex kann ein Kreis beschrieben werden, und nur einer. Da diese Zahl richtig ist, können Sie es ganz einfach machen: Ziehen Sie die Winkelhalbierende von zwei benachbarten Ecken nach innen. Sie schneiden sich im Punkt O und bilden zusammen mit der Seite dazwischen ein Dreieck.

Die Winkel zwischen der Seite des Sechsecks und den Winkelhalbierenden betragen jeweils 60 °, sodass wir definitiv sagen können, dass ein Dreieck, zum Beispiel AOB, gleichschenklig ist. Und da der dritte Winkel ebenfalls 60 ° beträgt, ist er auch gleichseitig. Daraus folgt, dass die Segmente OA und OB gleich sind, was bedeutet, dass sie als Radius des Kreises dienen können.

Danach können Sie zur nächsten Seite gehen und auch die Winkelhalbierende aus dem Winkel am Punkt C ableiten. Sie erhalten ein weiteres gleichseitiges Dreieck, und die AB-Seite ist für beide gleichzeitig gemeinsam, und das OS ist der nächste Radius, durch den der gleiche Kreis geht. Es wird insgesamt sechs solcher Dreiecke geben, und sie haben einen gemeinsamen Scheitelpunkt im Punkt O. Es stellt sich heraus, dass es möglich ist, einen Kreis zu beschreiben, und es ist nur ein Kreis, und sein Radius ist gleich der Seite des Sechsecks :

Deshalb ist es möglich, diese Figur mit einem Zirkel und einem Lineal zu konstruieren.

Nun, die Fläche dieses Kreises wird Standard sein:

Beschrifteter Kreis

Der Mittelpunkt des eingeschriebenen Kreises fällt mit dem Mittelpunkt des eingeschriebenen Kreises zusammen. Um dies zu überprüfen, können Sie Senkrechte von Punkt O zu den Seiten des Sechsecks zeichnen. Sie sind die Höhen der Dreiecke, aus denen das Sechseck besteht. Und in einem gleichschenkligen Dreieck ist die Höhe der Median in Bezug auf die Seite, auf der es ruht. Diese Höhe ist also nichts anderes als die Mittelpunktssenkrechte, die der Radius des eingeschriebenen Kreises ist.

Die Höhe eines gleichseitigen Dreiecks berechnet sich einfach:

h² = a²- (a / 2) ² = a²3 / 4, h = a (√3) / 2

Und da R = a und r = h ist, stellt sich heraus, dass

r = R (√3) / 2.

Somit geht der eingeschriebene Kreis durch die Mitten der Seiten des regelmäßigen Sechsecks.

Sein Bereich wird sein:

S = 3πa² / 4,

das sind drei Viertel der beschriebenen.

Umfang und Fläche

Mit dem Umfang ist alles klar, das ist die Summe der Seitenlängen:

P = 6a, oder P = 6R

Aber die Fläche ist gleich der Summe aller sechs Dreiecke, in die das Sechseck geteilt werden kann. Da die Fläche eines Dreiecks als die Hälfte des Produkts aus Basis und Höhe berechnet wird, gilt:

S = 6 (a / 2) (a (√3) / 2) = 6² (√3) / 4 = 3² (√3) / 2 oder

S = 3R² (√3) / 2

Wer diese Fläche durch den Radius des einbeschriebenen Kreises berechnen möchte, kann so vorgehen:

S = 3 (2r / √3) ² (√3) / 2 = r² (2√3)

Unterhaltsame Konstruktionen

Ein Dreieck kann in ein Sechseck eingeschrieben werden, dessen Seiten die Scheitelpunkte durch einen verbinden:

Es wird insgesamt zwei geben, und ihre Überlagerung ergibt den Davidstern. Jedes dieser Dreiecke ist gleichseitig. Davon zu überzeugen ist nicht schwer. Wenn Sie sich die AC-Seite ansehen, gehört sie gleichzeitig zu zwei Dreiecken - BAC und AEC. Wenn im ersten von ihnen AB = BC ist und der Winkel zwischen ihnen 120 ° beträgt, beträgt jeder der verbleibenden 30 °. Daraus können wir logische Schlüsse ziehen:

  1. Die Höhe ABC vom Scheitelpunkt B ist die halbe Seite des Sechsecks, da sin30 ° = 1/2. Wer sich davon überzeugen will, dem sei geraten, nach dem Satz des Pythagoras zu erzählen, er passt hier perfekt.
  2. Die Seite des AC ist gleich zwei Radien des eingeschriebenen Kreises, der wiederum nach dem gleichen Satz berechnet wird. Das heißt, AC = 2 (a (√3) / 2) = a (√3).
  3. Die Dreiecke ABC, CDE und AEF sind auf zwei Seiten und dem Winkel zwischen ihnen gleich, und damit die Gleichheit der Seiten AC, CE und EA.

Die Dreiecke kreuzen sich und bilden ein neues Sechseck, das ebenfalls regelmäßig ist. Dies ist einfach bewiesen:

Damit erfüllt die Figur die Eigenschaften eines regelmäßigen Sechsecks - sie hat sechs gleiche Seiten und Winkel. Aus der Gleichheit der Dreiecke an den Scheitelpunkten lässt sich leicht auf die Seitenlänge des neuen Sechsecks schließen:

d = a (√3) / 3

Es wird auch der Radius des um ihn herum beschriebenen Kreises sein. Der Radius der Einbeschriftung beträgt die halbe Seite des großen Sechsecks, was bei der Betrachtung des Dreiecks ABC bewiesen wurde. Seine Höhe beträgt genau die Hälfte der Seite, daher ist die zweite Hälfte der Radius des in das kleine Sechseck eingeschriebenen Kreises:

r₂ = a / 2

S = (3 (√3) / 2) (a (√3) / 3) ² = a (√3) / 2

Es stellt sich heraus, dass die Fläche des Sechsecks im Davidstern dreimal kleiner ist als die des großen, in das der Stern eingeschrieben ist.

Von der Theorie zur Praxis

Die Eigenschaften des Sechsecks werden sowohl in der Natur als auch in verschiedenen Bereichen der menschlichen Tätigkeit sehr aktiv genutzt. Dies gilt zunächst für Schrauben und Muttern - die Kappen der ersten und zweiten sind nichts anderes als der richtige Sechskant, wenn Sie die Fasen nicht berücksichtigen. Die Größe der Schraubenschlüssel entspricht dem Durchmesser des eingeschriebenen Kreises, also dem Abstand zwischen gegenüberliegenden Flächen.

Auch sechseckige Fliesen haben ihre Anwendung gefunden. Es ist viel seltener als viereckig, aber es ist bequemer, es zu verlegen: Drei Fliesen treffen sich an einem Punkt und nicht vier. Kompositionen können sehr interessant sein:

Auch Betonplatten werden hergestellt.

Die Verbreitung des Sechsecks in der Natur lässt sich leicht erklären. So lassen sich Kreise und Kugeln am einfachsten dicht auf eine Ebene legen, wenn sie den gleichen Durchmesser haben. Aus diesem Grund hat die Wabe eine solche Form.

Sechseckige Gitter (hexagonale Gitter) werden in einigen Spielen verwendet, aber sie sind nicht so einfach und üblich wie rechteckige Gitter. Ich sammle seit fast 20 Jahren Ressourcen auf Hex-Grids und habe diesen Leitfaden zu einigen der elegantesten Ansätze in einfachstem Code geschrieben. Dieser Artikel verwendet oft die Tutorials von Charles Fu und Clark Verbrugge. Ich werde die verschiedenen Möglichkeiten zum Erstellen von Hex-Netzen beschreiben, wie sie sich aufeinander beziehen und die gebräuchlichsten Algorithmen. Viele Teile dieses Artikels sind interaktiv: Die Auswahl eines Rastertyps ändert die entsprechenden Schaltpläne, Codes und Texte. (Ca. Lane: Dies gilt nur für das Original, ich empfehle Ihnen, es zu studieren. In der Übersetzung bleiben alle Informationen des Originals erhalten, jedoch ohne Interaktivität.).

Die Codebeispiele in diesem Artikel sind in Pseudocode geschrieben, sodass sie leichter zu lesen und zu verstehen sind, um Ihre eigene Implementierung zu schreiben.

Geometrie

Hexagone sind Hexagone. Regelmäßige Sechsecke haben alle Seiten (Flächen) der gleichen Länge. Wir werden nur mit regelmäßigen Sechsecken arbeiten. In der Regel verwenden Hex-Raster horizontale (spitze Spitze) und vertikale (flache Spitze) Ausrichtungen.


Flache (links) und spitze (rechts) obere Sechsecke

Sechsecke haben 6 Gesichter. Jede Fläche ist zwei Sechsecken gemeinsam. Sechsecke haben 6 Eckpunkte. Jeder Eckpunkt wird von drei Sechsecken geteilt. Mehr über Zentren, Kanten und Eckpunkte erfahren Sie in meinem Artikel über Netzteile (Quadrate, Sechsecke und Dreiecke).

Ecken

Bei einem regelmäßigen Sechseck betragen die Innenwinkel 120°. Es gibt sechs "Keile", von denen jeder ein gleichseitiges Dreieck mit Innenwinkeln von 60 ° ist. Eckpunkt ich ist im Abstand von (60 ° * i) + 30 °, Größeneinheiten von der Mitte. Im Code:

Funktion hex_corner (center, size, i): var angle_deg = 60 * i + 30 var angle_rad = PI / 180 * angle_deg return Point (center.x + size * cos (angle_rad), center.y + size * sin (angle_rad) )
Um das Sechseck zu füllen, müssen Sie die Eckpunkte des Polygons von hex_corner (..., 0) bis hex_corner (..., 5) erhalten. Um den Umriss des Sechsecks zu zeichnen, verwenden Sie diese Eckpunkte und zeichnen Sie die Linie dann erneut in hex_corner (..., 0).

Der Unterschied zwischen den beiden Orientierungen besteht darin, dass x und y die Plätze wechseln, wodurch sich die Winkel ändern: Die Winkel der abgeflachten Sechsecke sind 0°, 60°, 120°, 180°, 240°, 300° und die spitze Sechsecke sind 30°, 90°, 150°, 210°, 270°, 330°.


Winkel der flachen und spitzen Sechsecke

Größe und Lage

Nun wollen wir mehrere Sechsecke zusammen positionieren. In horizontaler Ausrichtung ist die Höhe des Sechsecks Höhe = Größe * 2. Der vertikale Abstand zwischen benachbarten Sechsecken vert = Höhe * 3/4.

Die Breite des Sechsecks ist width = sqrt (3) / 2 * height. Der horizontale Abstand zwischen benachbarten Sechsecken horiz = Breite.

Einige Spiele verwenden Pixelkunst für Sechsecke, die nicht genau mit regulären Sechsecken übereinstimmen. Die in diesem Abschnitt beschriebenen Winkel- und Positionsformeln stimmen nicht mit den Abmessungen dieser Sechsecke überein. Der Rest des Artikels, der die Hex-Grid-Algorithmen beschreibt, gilt auch dann, wenn die Sechsecke leicht gestreckt oder gestaucht werden.



Koordinatensystem

Beginnen wir damit, die Sechsecke zu einem Raster zusammenzusetzen. Im Fall von Rasterfeldern aus Quadraten gibt es nur eine offensichtliche Art der Montage. Für Sechsecke gibt es viele Ansätze. Ich empfehle die Verwendung von Kubikkoordinaten als primäre Darstellung. Achsenkoordinaten oder Offsetkoordinaten sollten verwendet werden, um Karten zu speichern und Koordinaten für den Benutzer anzuzeigen.

Offset-Koordinaten

Der gebräuchlichste Ansatz besteht darin, jede nachfolgende Spalte oder Zeile zu versetzen. Spalten werden mit col oder q bezeichnet. Zeilen werden als Zeile oder r bezeichnet. Ungerade oder gerade Spalten / Zeilen können versetzt werden, daher haben horizontale und vertikale Sechsecke zwei Möglichkeiten.


Ungerades horizontales Layout


Gerade horizontale Anordnung


Ungerade-q vertikale Anordnung


Gerade-q vertikale Anordnung

Kubische Koordinaten

Eine andere Möglichkeit, Gitter von Sechsecken zu betrachten, besteht darin, sie zu sehen drei Hauptachsen, nicht zwei wie in Rasterfeldern. Sie zeigen elegante Symmetrie.

Nehmen Sie ein Gitter aus Würfeln und ausgeschnitten die diagonale Ebene bei x + y + z = 0. Dies ist eine seltsame Idee, aber sie wird uns helfen, die Hex-Grid-Algorithmen zu vereinfachen. Insbesondere werden wir in der Lage sein, Standardoperationen aus kartesischen Koordinaten zu verwenden: Addition und Subtraktion von Koordinaten, Multiplikation und Division mit einem Skalar sowie Entfernungen.

Beachten Sie die drei Hauptachsen des Würfelgitters und ihre Beziehung zu den sechs. Diagonale Richtungen des Gitters der Sechsecke. Die diagonalen Achsen des Gitters entsprechen der Grundrichtung des Hex-Gitters.


Sechsecke


Kuba

Da wir bereits Algorithmen für Gitter aus Quadraten und Würfeln haben, können wir diese Algorithmen mit Hilfe von Kubikkoordinaten an Gitter von Sechsecken anpassen. Ich werde dieses System für die meisten Algorithmen im Artikel verwenden. Um Algorithmen mit einem anderen Koordinatensystem zu verwenden, transformiere ich die Kubikkoordinaten, führe den Algorithmus aus und transformiere sie dann zurück.

Erkunden Sie, wie kubische Koordinaten für ein Gitter aus Sechsecken funktionieren. Wenn Sie Sechsecke auswählen, werden die den drei Achsen entsprechenden Kubikkoordinaten hervorgehoben.

  1. Jede Richtung des Würfelgitters entspricht Die Linien auf einem Raster von Sechsecken. Versuchen Sie, ein Sechseck mit z gleich 0, 1, 2, 3 auszuwählen, um die Verbindung zu sehen. Die Linie ist blau markiert. Versuchen Sie dasselbe für x (grün) und y (lila).
  2. Jede Hex-Rasterrichtung ist eine Kombination aus zwei Würfel-Rasterrichtungen. Zum Beispiel liegt der Norden des Hex-Gitters zwischen + y und -z, sodass jeder Schritt nach Norden y um 1 erhöht und z um 1 verringert.
Kubische Koordinaten sind eine kluge Wahl für das Hex-Gitter-Koordinatensystem. Die Bedingung ist x + y + z = 0, also muss sie in Algorithmen beibehalten werden. Die Bedingung stellt auch sicher, dass es für jedes Sechseck immer eine kanonische Koordinate gibt.

Es gibt viele verschiedene Koordinatensysteme für Würfel und Sechsecke. In einigen von ihnen weicht die Bedingung von x + y + z = 0 ab. Ich habe nur eines von vielen Systemen gezeigt. Sie können auch kubische Koordinaten mit x-y, y-z, z-x erstellen, die ihre eigenen interessanten Eigenschaften haben, aber ich werde sie hier nicht behandeln.

Aber Sie könnten argumentieren, dass Sie keine 3 Zahlen für Koordinaten speichern möchten, weil Sie nicht wissen, wie Sie die Karte so speichern sollen.

Axiale Koordinaten

Ein axiales Koordinatensystem, manchmal als "trapezförmiges" Koordinatensystem bezeichnet, wird aus zwei oder drei Koordinaten eines kubischen Koordinatensystems konstruiert. Da wir die Bedingung x + y + z = 0 haben, wird die dritte Koordinate nicht benötigt. Achsenkoordinaten sind nützlich, um Karten zu speichern und dem Benutzer Koordinaten anzuzeigen. Wie bei Kubikkoordinaten können Sie mit ihnen standardmäßige kartesische Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen verwenden.

Es gibt viele kubische Koordinatensysteme und viele axiale. Ich werde nicht alle Kombinationen in diesem Tutorial behandeln. Ich werde zwei Variablen auswählen, q (Spalte) und r (Zeile). In den Diagrammen dieses Artikels entspricht q x und r entspricht z, aber diese Entsprechung ist willkürlich, da Sie die Diagramme drehen und drehen können, um unterschiedliche Entsprechungen zu erhalten.

Der Vorteil dieses Systems gegenüber Verschiebungsgittern besteht darin, dass die Algorithmen verständlicher sind. Der Nachteil des Systems besteht darin, dass das Speichern einer rechteckigen Karte etwas seltsam ist; siehe den Abschnitt zum Speichern von Karten. Einige Algorithmen sind in Kubikkoordinaten noch klarer, aber da wir die Bedingung x + y + z = 0 haben, können wir die dritte implizierte Koordinate berechnen und in diesen Algorithmen verwenden. In meinen Projekten nenne ich die Achsen q, r, s, so dass die Bedingung wie q + r + s = 0 aussieht und ich bei Bedarf s = -q - r berechnen kann.

Achsen

Offset-Koordinaten sind das Erste, woran die meisten Leute denken, weil sie mit den kartesischen Standardkoordinaten übereinstimmen, die für quadratische Gitter verwendet werden. Leider muss eine der beiden Achsen gegen den Strom laufen, was die Sache kompliziert macht. Kubische und axiale Systeme gehen entlang der Linie und haben einfachere Algorithmen, aber das Speichern von Karten ist etwas komplexer. Es gibt ein anderes System namens "alternierend" oder "doppelt", aber wir werden es hier nicht betrachten; manche finden es einfacher, damit zu arbeiten als kubisch oder axial.


Offset-Koordinaten, kubisch und axial

Achse ist die Richtung, in der die entsprechende Koordinate erhöht wird. Die Senkrechte zur Achse ist die Linie, auf der die Koordinate konstant bleibt. Die obigen Rasterdiagramme zeigen senkrechte Linien.

Koordinatentransformation

Es ist wahrscheinlich, dass Sie in Ihrem Projekt axiale Koordinaten oder Offset-Koordinaten verwenden, aber viele Algorithmen lassen sich einfacher in Kubikkoordinaten ausdrücken. Daher müssen wir in der Lage sein, Koordinaten zwischen Systemen zu transformieren.

Axiale Koordinaten sind eng mit kubischen Koordinaten verwandt, daher ist die Transformation einfach:

# kubische in axiale Koordinaten umrechnen q = x r = z # axiale in kubische Koordinaten umrechnen x = q z = r y = -x-z
Im Code können diese beiden Funktionen wie folgt geschrieben werden:

Funktion cube_to_hex (h): # axial var q = hx var r = hz return Hex (q, r) Funktion hex_to_cube (h): # kubisch var x = hq var z = hr var y = -xz return Cube (x, y , z)
Die Offset-Koordinaten sind ziemlich knifflig:

Angrenzende Sechsecke

An welche sechs Sechsecke grenzt es bei einem gegebenen Sechseck an? Wie Sie vielleicht erwarten, ist die Antwort in Kubikkoordinaten am einfachsten, in axialen Koordinaten ziemlich einfach und in Offset-Koordinaten etwas komplexer. Möglicherweise müssen Sie auch sechs "diagonale" Sechsecke berechnen.

Kubische Koordinaten

Das Verschieben eines Leerzeichens in den Koordinaten der Sechsecke ändert eine der drei Kubikkoordinaten um +1 und die andere um -1 (die Summe muss gleich 0 bleiben). Drei mögliche Koordinaten können um +1 geändert werden und die restlichen zwei können um -1 geändert werden. Dies gibt uns sechs mögliche Änderungen. Jedes entspricht einer der Richtungen des Sechsecks. Der einfachste und schnellste Weg besteht darin, die Änderungen vorab zu berechnen und sie zur Kompilierzeit in der Cube-Tabelle (dx, dy, dz) zu platzieren:

Var-Richtungen = [Würfel (+1, -1, 0), Würfel (+1, 0, -1), Würfel (0, +1, -1), Würfel (-1, +1, 0), Würfel ( -1, 0, +1), Cube (0, -1, +1)] Funktion cube_direction (Richtung): Rückkehr Richtungen Funktion cube_neighbor (hex, Richtung): Rückkehr cube_add (hex, cube_direction (Richtung))

Axiale Koordinaten

Wie zuvor beginnen wir mit dem Würfelsystem. Nehmen Sie die Cube-Tabelle (dx, dy, dz) und konvertieren Sie sie in die Hex-Tabelle (dq, dr):

Var-Richtungen = [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)] Funktion hex_direction (Richtung): Rückkehr Richtungen Funktion hex_neighbor (hex, Richtung): var dir = hex_direction (Richtung) Rückkehr Hex (hex.q + dir.q, hex.r + dir.r)

Offset-Koordinaten

In axialen Koordinaten nehmen wir Änderungen vor, je nachdem, wo wir uns auf dem Raster befinden. Befinden wir uns in einem Spalten-/Zeilen-Offset, dann unterscheidet sich die Regel vom Fall einer Spalte/Zeile ohne Offset.

Wie zuvor erstellen wir eine Zahlentabelle, die zu col und row hinzugefügt wird. Diesmal werden wir jedoch zwei Arrays haben, eines für die ungeraden Spalten / Zeilen und das andere für die geraden. Schauen Sie sich (1,1) in der Rasterkarte oben an und beachten Sie, wie sich Spalte und Zeile ändern, wenn Sie sich in jede der sechs Richtungen bewegen. Nun wiederholen wir den Vorgang für (2,2). Die Tabellen und der Code sind für jeden der vier Arten von Verschiebungsgittern unterschiedlich, hier ist der entsprechende Code für jeden Gittertyp.

Ungerade-r
var Richtungen = [[Hex (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1)], [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (0, +1), Hex ( +1, +1)]] Funktion offset_neighbor (hex, Direction): var parity = hex.row & 1 var dir = Directions return Hex (hex.col + dir.col, hex.row + dir.row)


Gerade-r
var Richtungen = [[Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, 0), Hex (0, +1), Hex (+1 , +1)], [Hex (+1, 0), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)]] Funktion offset_neighbor (hex, Direction): var parity = hex.row & 1 var dir = Directions return Hex (hex.col + dir.col, hex.row + dir.row)


Raster für gerade (EVEN) und ungerade (ODD) Zeilen

Ungerade-q
var Richtungen = [[Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (0 , +1)], [Hex (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0, +1)]] Funktion offset_neighbor (hex, direction): var parity = hex.col & 1 var dir = Directions return Hex (hex.col + dir.col, hex.row + dir.row)


Gerade-q
var Richtungen = [[Hex (+1, +1), Hex (+1, 0), Hex (0, -1), Hex (-1, 0), Hex (-1, +1), Hex (0 , +1)], [Hex (+1, 0), Hex (+1, -1), Hex (0, -1), Hex (-1, -1), Hex (-1, 0), Hex (0, +1)]] Funktion offset_neighbor (hex, Direction): var parity = hex.col & 1 var dir = Directions return Hex (hex.col + dir.col, hex.row + dir.row)


Raster für gerade (EVEN) und ungerade (ODD) Spalten

Diagonalen

Die Bewegung im "diagonalen" Raum in den Koordinaten der Sechsecke ändert eine der drei Kubikkoordinaten um ± 2 und die anderen beiden um ∓1 (die Summe muss gleich 0 bleiben).

Var-Diagonalen = [Würfel (+2, -1, -1), Würfel (+1, +1, -2), Würfel (-1, +2, -1), Würfel (-2, +1, +1 ), Cube (-1, -1, +2), Cube (+1, -2, +1)] Funktion cube_diagonal_neighbor (Hex, Richtung): return cube_add (Hex, Diagonalen)
Wie zuvor können wir diese Koordinaten in axiale Koordinaten umwandeln, indem wir eine der drei Koordinaten verwerfen oder in Offset-Koordinaten umwandeln, nachdem wir die Ergebnisse berechnet haben.


Entfernungen

Kubische Koordinaten

In einem kubischen Koordinatensystem ist jedes Sechseck ein Würfel in drei Dimensionen. Angrenzende Sechsecke sind 1 im Hex-Raster, aber 2 im Würfel-Raster. Dies erleichtert die Berechnung von Entfernungen. In einem Quadratgitter sind die Manhattan-Abstände abs (dx) + abs (dy). In einem Würfelgitter sind die Manhattan-Abstände abs (dx) + abs (dy) + abs (dz). Der Abstand im Raster der Sechsecke ist gleich der Hälfte davon:

Funktion cube_distance (a, b): return (abs (a.x - b.x) + abs (a.y - b.y) + abs (a.z - b.z)) / 2
Das Äquivalent dieser Notation wäre, auszudrücken, dass eine der drei Koordinaten die Summe der anderen beiden sein sollte, und dann als Entfernung zu erhalten. Sie können die Bisektionsform oder die Maximalwertform unten wählen, aber sie liefern das gleiche Ergebnis:

Funktion cube_distance (a, b): Rückgabe max (abs (a.x - b.x), abs (a.y - b.y), abs (a.z - b.z))
In der Abbildung sind die Maximalwerte farblich hervorgehoben. Beachten Sie auch, dass jede Farbe eine von sechs "diagonalen" Richtungen darstellt.

GIF


Axiale Koordinaten

Im Achsensystem wird die dritte Koordinate implizit ausgedrückt. Lassen Sie uns von axial in kubisch umrechnen, um den Abstand zu berechnen:

Funktion hex_distance (a, b): var ac = hex_to_cube (a) var bc = hex_to_cube (b) return cube_distance (ac, bc)
Wenn der Compiler in Ihrem Fall hex_to_cube und cube_distance inline, dann generiert er den folgenden Code:

Funktion hex_distance (a, b): return (abs (a.q - b.q) + abs (a.q + a.r - b.q - b.r) + abs (a.r - b.r)) / 2
Es gibt viele verschiedene Möglichkeiten, die Abstände zwischen Sechsecken in axialen Koordinaten zu schreiben, aber unabhängig von der Schreibweise der Abstand zwischen den Sechsecken im Achsensystem wird aus dem Manhattan-Abstand im kubischen System extrahiert... Zum Beispiel erhält man die beschriebene „Differenz der Differenzen“, indem man a.q + a.r - b.q - b.r als a.q - b.q + a.r - b.r schreibt und die Maximalwertform anstelle der Bisektionsform cube_distance verwendet. Sie sind alle ähnlich, wenn Sie die Beziehung zu Kubikkoordinaten sehen.

Offset-Koordinaten

Wie bei den axialen Koordinaten konvertieren wir die Offset-Koordinaten in kubische Koordinaten und verwenden dann den kubischen Abstand.

Funktion offset_distance (a, b): var ac = offset_to_cube (a) var bc = offset_to_cube (b) return cube_distance (ac, bc)
Wir verwenden dasselbe Muster für viele Algorithmen: Konvertieren von Sechsecken in Würfel, führen die kubische Version des Algorithmus aus und konvertieren die kubischen Ergebnisse in Hex-Koordinaten (axiale oder versetzte Koordinaten).

Linien zeichnen

Wie zeichne ich eine Linie von einem Sechseck zum anderen? Ich verwende lineare Interpolation, um Linien zu zeichnen. Die Linie wird gleichmäßig an N + 1 Punkten abgetastet und es wird berechnet, in welchen Sechsecken sich diese Abtastwerte befinden.

GIF


  1. Wir berechnen zuerst N, was der Hex-Abstand zwischen den Endpunkten ist.
  2. Dann werden N + 1 Punkte zwischen den Punkten A und B gleichmäßig abgetastet. Bestimmen Sie mit linearer Interpolation, dass für Werte von i von 0 bis N, einschließlich dieser, jeder Punkt A + (B - A) * 1.0 / N * ist. ich. In der Abbildung sind diese Kontrollpunkte blau dargestellt. Das Ergebnis sind Gleitkommakoordinaten.
  3. Wandeln Sie jeden Kontrollpunkt (float) wieder in Sechsecke (int) um. Der Algorithmus heißt cube_round (siehe unten).
Alles zusammenfügen, um eine Linie von A nach B zu ziehen:

Funktion lerp (a, b, t): // für float Rückgabe a + (b - a) * t Funktion cube_lerp (a, b, t): // für Hexagone Rückgabe Cube (lerp (ax, bx, t), lerp (ay, by, t), lerp (az, bz, t)) Funktion cube_linedraw (a, b): var N = cube_distance (a, b) var Ergebnisse = für jedes 0 ≤ i ≤ N: Ergebnisse.append ( cube_round (cube_lerp (a, b, 1.0 / N * i))) Ergebnisse zurückgeben
Anmerkungen:

  • Es gibt Zeiten, in denen cube_lerp einen Punkt genau auf der Kante zwischen zwei Sechsecken zurückgibt. Dann verschiebt cube_round es in die eine oder andere Richtung. Linien sehen besser aus, wenn sie in die gleiche Richtung verschoben werden. Dies kann durch Hinzufügen eines Epsilon-Hex-Würfels (1e-6, 1e-6, -2e-6) zu einem oder beiden Endpunkten erfolgen, bevor die Schleife gestartet wird. Dadurch wird die Linie in eine Richtung "angestoßen", so dass sie nicht die Kantengrenzen berührt.
  • Der DDA-Linienalgorithmus in Quadratgittern entspricht N dem maximalen Abstand entlang jeder Achse. Dasselbe machen wir im kubischen Raum, was analog zum Abstand in einem Sechseckraster ist.
  • Die Funktion cube_lerp sollte einen Würfel mit Koordinaten in float zurückgeben. Wenn Sie in einer statisch typisierten Sprache programmieren, können Sie den Cube-Typ nicht verwenden. Stattdessen können Sie den FloatCube-Typ definieren oder eine Funktion in Ihren Strichzeichnungscode einfügen, wenn Sie keinen anderen Typ definieren möchten.
  • Sie können Ihren Code optimieren, indem Sie cube_lerp inline und dann B.x-A.x, B.x-A.y und 1.0 / N außerhalb der Schleife berechnen. Multiplikation kann in wiederholte Summation umgewandelt werden. Das Ergebnis wird so etwas wie ein DDA-Zeilenalgorithmus sein.
  • Ich verwende axiale oder kubische Koordinaten, um Linien zu zeichnen, aber wenn Sie mit Offset-Koordinaten arbeiten möchten, lernen Sie es.
  • Es gibt viele Möglichkeiten zum Zeichnen von Linien. Manchmal ist eine Überlackierung erforderlich. Sie haben mir den Code zum Zeichnen von Linien mit Überzug in Sechsecken geschickt, aber ich habe mich noch nicht damit befasst.

Reisebereich

Koordinatenbereich

Welche Sechsecke liegen für einen gegebenen Mittelpunkt eines Sechsecks und einen Bereich von N innerhalb von N Schritten davon?

Wir können die umgekehrte Arbeit aus der Formel für den Abstand zwischen den Sechsecken machen Abstand = max (abs (dx), abs (dy), abs (dz)). Um alle Sechsecke innerhalb von N zu finden, brauchen wir max (abs (dx), abs (dy), abs (dz)) ≤ N. Das bedeutet, dass alle drei Werte benötigt werden: abs (dx) ≤ N und abs (dy) ≤ N und abs (dz) ≤ N. Durch Entfernen des Absolutwertes erhalten wir -N dx ≤ N und -N ≤ dy ≤ N und -N ≤ dz ≤ N. Im Code ist dies eine verschachtelte Schleife:

Var Ergebnisse = für jedes -N ≤ dx ≤ N: für jedes -N ≤ dy ≤ N: für jedes -N ≤ dz ≤ N: wenn dx + dy + dz = 0: Ergebnisse.append (cube_add (center, Cube (dx , dy, dz)))
Diese Schleife wird funktionieren, aber sie wird ziemlich ineffektiv sein. Von allen dz-Werten, über die wir in der Schleife iterieren, erfüllt nur einer tatsächlich die Würfelbedingung dx + dy + dz = 0. Stattdessen berechnen wir direkt den dz-Wert, der die Bedingung erfüllt:

Var Ergebnisse = für jedes -N ≤ dx ≤ N: für jedes max (-N, -dx-N) ≤ dy ≤ min (N, -dx + N): var dz = -dx-dy Ergebnisse.append (cube_add ( Zentrum, Würfel (dx, dy, dz)))
Dieser Zyklus läuft nur entlang der erforderlichen Koordinaten. In der Abbildung ist jeder Bereich ein Linienpaar. Jede Linie ist eine Ungleichung. Wir nehmen alle Sechsecke, die sechs Ungleichungen erfüllen.

GIF


Überlappende Bereiche

Wenn Sie Sechsecke suchen müssen, die sich in mehreren Bereichen befinden, können Sie die Bereiche durchlaufen, bevor Sie die Liste der Sechsecke erstellen.

Sie können dieses Problem in Bezug auf Algebra oder Geometrie angehen. Algebraisch wird jede Region als Ungleichungsbedingungen in der Form -N ≤ dx ≤ N ausgedrückt, und wir müssen den Schnittpunkt dieser Bedingungen finden. Geometrisch ist jede Fläche ein Würfel im dreidimensionalen Raum, und wir werden zwei Würfel im dreidimensionalen Raum schneiden, um ein rechteckiges Parallelepiped im dreidimensionalen Raum zu erhalten. Wir projizieren es dann zurück auf die x + y + z = 0-Ebene, um die Sechsecke zu erhalten. Ich werde dieses Problem algebraisch lösen.

Zuerst schreiben wir die Bedingung -N dx ≤ N in eine allgemeinere Form x min ≤ x ≤ x max um und nehmen x min = center.x - N und x max = center.x + N. Machen wir dasselbe für y und z, was zu einer allgemeinen Ansicht des Codes aus dem vorherigen Abschnitt führt:

Var Ergebnisse = für jedes xmin ≤ x ≤ xmax: für jedes max (ymin, -x-zmax) ≤ y ≤ min (ymax, -x-zmin): var z = -xy Ergebnisse.append (Cube (x, y, z))
Der Schnittpunkt der beiden Bereiche a x b und c x ≤ d ist max (a, c) ≤ x min (b, d). Da die Fläche der Sechsecke als Bereiche über x, y, z ausgedrückt wird, können wir jeden der x-, y-, z-Bereiche einzeln schneiden und dann eine verschachtelte Schleife verwenden, um eine Liste von Sechsecken am Schnittpunkt zu generieren. Für einen Bereich von Hexagonen nehmen wir x min = H.x - N und x max = H.x + N, ähnlich für y und z. Für den Schnittpunkt zweier Bereiche von Sechsecken nehmen wir x min = max (H1.x - N, H2.x - N) und x max = min (H1.x + N, H2.x + N), ähnlich für y und z. Das gleiche Muster funktioniert für den Schnittpunkt von drei oder mehr Regionen.

GIF


Hindernis

Bei Hindernissen ist es am einfachsten mit einem begrenzten Abstand zu füllen (Breadth First Search). In der Abbildung unten sind wir auf vier Züge beschränkt. Im Code ist fringes [k] ein Array aller Sechsecke, die in k Schritten erreicht werden können. Bei jedem Durchgang durch die Hauptschleife erweitern wir Level k-1 auf Level k.

Funktion cube_reachable (Start, Bewegung): var besucht = set () füge Start zu besucht hinzu var fringes = fringes.append () für jede 1< k ≤ movement: fringes.append() for each cube in fringes: for each 0 ≤ dir < 6: var neighbor = cube_neighbor(cube, dir) if neighbor not in visited, not blocked: add neighbor to visited fringes[k].append(neighbor) return visited

Wendet sich

Für einen gegebenen Sechseckvektor (die Differenz zwischen den beiden Sechsecken) müssen wir ihn möglicherweise so drehen, dass er auf ein anderes Sechseck zeigt. Mit Kubikkoordinaten geht das leicht, wenn man sich an eine Drehung von 1/6 eines Kreises hält.

Eine Drehung um 60° nach rechts verschiebt jede Koordinate um eine Position nach rechts:

[x, y, z] bis [-z, -x, -y]
Eine Drehung um 60° nach links verschiebt jede Koordinate um eine Position nach links:

[x, y, z] bis [-y, -z, -x]



"Nachdem Sie" [im Originalartikel] mit dem Schema gespielt haben, werden Sie feststellen, dass jede Drehung um 60 ° Änderungen Zeichen und "dreht" die Koordinaten physikalisch. Nach einer 120° Drehung sind die Vorzeichen wieder die gleichen. Eine 180°-Drehung ändert das Vorzeichen, aber die Koordinaten werden in ihre ursprüngliche Position gedreht.

Hier ist die vollständige Abfolge der Drehung der P-Position um die mittlere C-Position, was zu einer neuen R-Position führt:

  1. Wandeln Sie die Positionen P und C in Kubikkoordinaten um.
  2. Berechnen Sie den Vektor durch Subtrahieren des Zentrums: P_from_C = P - C = Cube (P.x - C.x, P.y - C.y, P.z - C.z).
  3. Drehen Sie den P_from_C-Vektor wie oben beschrieben und weisen Sie den resultierenden Vektor R_from_C zu.
  4. Konvertieren Sie den Vektor zurück in die Position, indem Sie das Zentrum hinzufügen: R = R_from_C + C = Cube (R_from_C.x + C.x, R_from_C.y + C.y, R_from_C.z + C.z).
  5. Wandeln Sie die kubische Position R wieder in das gewünschte Koordinatensystem um.
Es gibt mehrere Transformationsstufen, aber jede von ihnen ist ziemlich einfach. Es ist möglich, einige dieser Schritte zu verkürzen, indem Sie die Drehung direkt in Achskoordinaten definieren, aber Hex-Vektoren funktionieren nicht mit Offset-Koordinaten, und ich weiß nicht, wie man die Schritte für Offset-Koordinaten verkürzt. Siehe auch die Stackexchange-Diskussion zu anderen Methoden zur Berechnung von Pivot.

Ringe

Einfacher Ring

Um herauszufinden, ob ein bestimmtes Sechseck zu einem Ring mit einem bestimmten Radius gehört, müssen Sie den Abstand von diesem Sechseck zum Mittelpunkt berechnen und herausfinden, ob er gleich dem Radius ist. Um eine Liste aller dieser Sechsecke zu erhalten, nehmen Sie Radiusschritte von der Mitte aus und folgen Sie dann den gedrehten Vektoren entlang des Pfads entlang des Rings.

Funktion cube_ring (center, radius): var results = # dieser Code funktioniert nicht für radius == 0; verstehst du warum? var cube = cube_add (center, cube_scale (cube_direction (4), radius)) für jede 0 ≤ i< 6: for each 0 ≤ j < radius: results.append(cube) cube = cube_neighbor(cube, i) return results
In diesem Code beginnt der Würfel an dem Ring, der durch einen großen Pfeil von der Mitte bis zur Ecke des Diagramms angezeigt wird. Ich habe Winkel 4 gewählt, um zu beginnen, weil er dem Weg entspricht, in dem sich meine Richtungszahlen bewegen. Möglicherweise benötigen Sie einen anderen Startwinkel. Bei jedem Schritt der inneren Schleife bewegt sich der Würfel ein Sechseck um den Ring. Nach 6 * Radiusschritten endet es dort, wo es begonnen hat.


Spiralringe

Indem wir die Ringe in einem spiralförmigen Muster durchlaufen, können wir die inneren Teile der Ringe ausfüllen:

Funktion cube_spiral (Mitte, Radius): var Ergebnisse = für jedes 1 ≤ k ≤ Radius: Ergebnisse = Ergebnisse + cube_ring (Mitte, k) Ergebnisse zurückgeben



Die Fläche des großen Sechsecks ist die Summe aller Kreise plus 1 für den Mittelpunkt. Verwenden Sie diese Formel, um die Fläche zu berechnen.

Durch diese Überquerung von Sechsecken kann auch der Bewegungsumfang berechnet werden (siehe oben).

Sichtbereich

Was ist von einer bestimmten Position in einer bestimmten Entfernung sichtbar und wird nicht durch Hindernisse behindert? Der einfachste Weg, dies zu bestimmen, besteht darin, zu jedem Sechseck in einem bestimmten Bereich eine Linie zu ziehen. Wenn die Linie nicht auf die Wände trifft, sehen Sie ein Sechseck. Bewegen Sie die Maus über die Sechsecke [im Diagramm im Originalartikel], um die Linien zu diesen Sechsecken und die Wände zu sehen, auf die sich die Linien treffen.

Dieser Algorithmus kann über große Bereiche langsam sein, aber er ist einfach zu implementieren, daher empfehle ich, damit zu beginnen.

GIF



Es gibt viele verschiedene Definitionen von Sichtbarkeit. Möchten Sie die Mitte eines anderen Sechsecks von der Mitte des Anfangsfelds aus sehen? Möchten Sie einen Teil des anderen Sechsecks von der Mitte des Startfelds aus sehen? Vielleicht irgendein Teil eines anderen Sechsecks von einem beliebigen Ausgangspunkt aus? Sind Hindernisse kleiner als ein volles Sechseck? Scope ist ein kniffligeres und vielfältigeres Konzept, als es auf den ersten Blick erscheint. Beginnen wir mit dem einfachsten Algorithmus, aber erwarten Sie, dass er die Antwort in Ihrem Projekt definitiv richtig berechnet. Es gibt sogar Fälle, in denen ein einfacher Algorithmus unlogische Ergebnisse liefert.

Ich möchte dieses Tutorial weiter ausbauen. Ich habe

Geometrische Konstruktionen sind einer der Hauptbestandteile der Ausbildung. Sie formen räumliches und logisches Denken und ermöglichen auch das Verständnis primitiver und natürlicher geometrischer Überlegungen. Konstruktionen werden auf einer Ebene mit einem Zirkel und einem Lineal hergestellt. Diese Werkzeuge können eine große Anzahl von geometrischen Formen bauen. Gleichzeitig werden viele Figuren, die recht schwierig erscheinen, nach einfachsten Regeln konstruiert. Wie man zum Beispiel das richtige Sechseck baut, darf man jedes in wenigen Worten beschreiben.

Du wirst brauchen

  • Kompass, Lineal, Bleistift, Blatt Papier.

Anweisungen

1. Zeichne einen Kreis. Stellen Sie einen gewissen Abstand zwischen den Beinen des Kompasses ein. Dieser Abstand ist der Radius des Kreises. Wählen Sie den Radius so aus, dass das Zeichnen des Kreises recht komfortabel ist. Der Kreis sollte vollständig auf das Blatt Papier passen. Ein zu großer oder zu kleiner Abstand zwischen den Beinen des Zirkels kann dazu führen, dass er sich während des Zeichnens ändert. Der optimale Abstand liegt bei einem Winkel zwischen den Kompassschenkeln von 15-30 Grad.

2. Zeichnen Sie die Scheitelpunkte der Ecken des richtigen Sechsecks. Platzieren Sie das Bein des Zirkels, in dem die Nadel befestigt ist, an einer beliebigen Stelle des Kreises. Die Nadel sollte die gezeichnete Linie durchstechen. Je richtiger der Kompass eingestellt ist, desto korrekter wird die Konstruktion. Zeichnen Sie einen Kreisbogen, so dass er den zuvor gezeichneten Kreis schneidet. Bewegen Sie die Kompassnadel zum Schnittpunkt des gerade skizzierten Bogens mit dem Kreis. Zeichnen Sie einen weiteren Bogen, der den Kreis schneidet. Positionieren Sie die Kompassnadel zum Schnittpunkt von Bogen und Kreis und zeichnen Sie den Bogen neu. Wiederholen Sie diese Aktion noch dreimal und bewegen Sie sich in eine Richtung um den Kreis. Jeder sollte sechs Bögen und sechs Schnittpunkte haben.

3. Konstruiere ein positives Sechseck. Verbinden Sie alle sechs Schnittpunkte der Bögen mit dem ursprünglich gezeichneten Kreis schrittweise. Verbinden Sie die Punkte mit geraden Linien, die Sie mit Lineal und Bleistift zeichnen. Später erhalten die ausgeführten Aktionen das richtige Sechseck, das in einem Kreis eingeschrieben ist.

Hexagon Betrachtet wird ein Polygon mit sechs Ecken und sechs Seiten. Polygone sind entweder konvex oder konkav. Bei einem konvexen Sechseck sind alle Innenwinkel stumpf, bei einem konkaven sind ein oder mehrere Winkel spitz. Das Sechseck ist ziemlich einfach zu bauen. Dies geschieht in wenigen Schritten.

Du wirst brauchen

  • Bleistift, Blatt Papier, Lineal

Anweisungen

1. Man nimmt ein Blatt Papier und markiert darauf ungefähr 6 Punkte, wie in Abb. 1.

2. Später, nachdem die Punkte markiert wurden, wird ein Lineal, ein Bleistift genommen und mit ihrer Hilfe schrittweise die Punkte nacheinander verbunden, wie es in Abb. 2.

Ähnliche Videos

Beachten Sie!
Die Summe aller Innenwinkel des Sechsecks beträgt 720 Grad.

Hexagon Ist ein Polygon, das sechs Ecken hat. Um ein beliebiges Sechseck zu zeichnen, müssen Sie alle 2 Aktionen ausführen.

Du wirst brauchen

  • Bleistift, Lineal, Blatt Papier.

Anweisungen

1. Sie müssen einen Bleistift in die Hand nehmen und 6 beliebige Punkte auf dem Blatt markieren. Diese Punkte werden in Zukunft die Rolle von Winkeln im Sechseck spielen. (Abb. 1)

2. Nehmen Sie ein Lineal und zeichnen Sie nach diesen Punkten 6 Segmente, die entsprechend den zuvor gezeichneten Punkten miteinander verbunden werden (Abb. 2)

Ähnliche Videos

Beachten Sie!
Eine Sonderform des Sechsecks ist das positive Sechseck. Es wird so genannt, weil alle seine Seiten und Winkel einander gleich sind. Es ist erlaubt, um ein solches Sechseck einen Kreis zu beschreiben oder einzuschreiben. Es ist erwähnenswert, dass an den Punkten, die durch Berühren des eingeschriebenen Kreises und der Seiten des Sechsecks erhalten werden, die Seiten des positiven Sechsecks halbiert werden.

Hilfreicher Rat
In der Natur sind positive Sechsecke sehr beliebt. Beispielsweise hat die gesamte Wabe eine positive sechseckige Form. Oder das Kristallgitter von Graphen (Modifikation von Kohlenstoff) hat auch die Form eines positiven Sechsecks.

Wie baut man das eine oder das andere Injektion Ist eine große Frage. Aber für einige Winkel wird die Aufgabe unsichtbar vereinfacht. Einer dieser Winkel ist Injektion bei 30 Grad. Es ist gleich? / 6, dh die Zahl 30 ist ein Teiler von 180. Außerdem ist sein Sinus bekannt. Das hilft beim Bauen.

Du wirst brauchen

  • Winkelmesser, Quadrat, Zirkel, Lineal

Anweisungen

1. Sehen wir uns zunächst eine besonders primitive Umgebung an, wenn Sie einen Winkelmesser in der Hand haben. Dann kann eine gerade Linie im Winkel von 30 Grad zu dieser leicht mit deren Unterstützung verschoben werden.

2. Neben dem Winkelmesser gibt es Injektion Kerben, von denen eine der Ecken 30 Grad beträgt. Dann ein anderer Injektion Injektion die Kerbe beträgt 60 Grad, dh Sie benötigen eine optisch kleinere Injektion um die gewünschte Gerade zu bauen.

3. Kommen wir nun zu nicht trivialen Methoden, um einen Winkel von 30 Grad zu konstruieren. Wie Sie wissen, beträgt der Sinus eines Winkels von 30 Grad 1/2. Um es zu bauen, müssen wir direkt errichten Injektion ny tre Injektion Spitzname. Vielleicht können wir zwei senkrechte Linien bauen. Aber der Tangens von 30 Grad ist eine irrationale Zahl, daher können wir das Verhältnis zwischen den Beinen nur ungefähr berechnen (ausschließlich, wenn kein Taschenrechner vorhanden ist) und daher bauen Injektion bei etwa 30 Grad.

4. In diesem Fall ist eine genaue Konstruktion zulässig. Lassen Sie uns wieder zwei senkrechte Geraden aufrichten, auf denen die Beine direkt liegen werden Injektion neuer tre Injektion nick. Legen Sie ein gerades Bein BC einiger Länge mit Hilfe eines Zirkels beiseite (B - gerade Injektion). Danach werden wir die Länge zwischen den Beinen des Kompasses um das Zweifache erhöhen, was elementar ist. Zeichnen wir einen Kreis mit einem Radius dieser Länge um Punkt C zentriert, finden wir den Schnittpunkt des Kreises mit einer anderen Geraden. Dieser Punkt wird Punkt A gerade sein Injektion neuer tre Injektion Spitzname ABC, und Injektion A wird gleich 30 Grad sein.

5. Aufrecht Injektion bei 30 Grad ist zulässig und mit Unterstützung des Kreises, vorausgesetzt, es ist gleich? / 6. Lassen Sie uns einen Kreis mit Radius OB errichten. Betrachten Sie in der Theorie von Injektion Nick, wobei OA = OB = R der Radius des Kreises ist, wobei Injektion OAB = 30 Grad. Sei OE die Höhe dieses gleichschenkligen tre Injektion nika, und folglich seine Winkelhalbierende und Median. Dann Injektion AOE = 15 Grad, und unter Verwendung der Halbwinkelformel sin (15o) = (sqrt (3) -1) / (2 * sqrt (2)) Daher gilt AE = R * sin (15o). Von hier aus ist AB = 2AE = 2R * sin (15o). Bilden wir einen Kreis mit Radius BA, der im Punkt B zentriert ist, finden wir den Schnittpunkt A dieses Kreises mit dem Anfangskreis. Der AOB beträgt 30 Grad.

6. Wenn wir die Länge der Bögen auf irgendeine Weise bestimmen können, erhalten wir dann, wenn wir einen Bogen der Länge beiseite legen? * R / 6, auch Injektion bei 30 Grad.

Beachten Sie!
Es muss daran erinnert werden, dass wir in Punkt 5 nur einen Winkel konstruieren können, da in den Berechnungen irrationale Zahlen auftauchen.

Hexagon ein Sonderfall eines Polygons wird genannt - eine Figur, die aus den meisten Punkten einer Ebene besteht, die von einer geschlossenen Polylinie begrenzt wird. Ein positives Sechseck (Sechseck) wiederum ist ebenfalls ein Sonderfall - es ist ein Vieleck mit sechs gleichen Seiten und gleichen Winkeln. Diese Figur ist insofern von Bedeutung, als die Länge aller ihrer Seiten gleich dem Radius des um die Figur beschriebenen Kreises ist.

Du wirst brauchen

  • - Kompasse;
  • - Herrscher;
  • - Bleistift;
  • - Blatt Papier.

Anweisungen

1. Wählen Sie die Länge der Seite des Sechsecks aus. Nehmen Sie einen Zirkel und stellen Sie den Abstand zwischen dem Ende der Nadel, das sich an einem ihrer Beine befindet, und dem Ende des Stifts, das sich am anderen Bein befindet, gleich der Seitenlänge der gezeichneten Figur ein. Dazu ist es erlaubt, ein Lineal zu verwenden oder einen zufälligen Abstand zu bevorzugen, wenn dieser Moment unbedeutend ist. Befestigen Sie die Beine des Kompasses wenn möglich mit einer Schraube.

2. Zeichne mit einem Zirkel einen Kreis. Der gewählte Abstand zwischen den Beinen ist der Radius des Kreises.

3. Teilen Sie den Kreis mit Punkten in sechs gleiche Teile. Diese Punkte sind die Eckpunkte der Ecken des Sechsecks und dementsprechend die Enden der Liniensegmente, die seine Seiten darstellen.

4. Stellen Sie den Kompassschenkel mit der Nadel auf einen beliebigen Punkt, der sich auf der Linie des umrissenen Kreises befindet. Die Nadel sollte die Linie richtig durchstechen. Die Genauigkeit der Konstruktionen hängt direkt von der Genauigkeit der Kompasseinstellung ab. Zeichnen Sie mit einem Zirkel einen Bogen, so dass er an 2 Punkten den zuerst gezeichneten Kreis kreuzt.

5. Bewegen Sie den Zirkelschenkel mit der Nadel zu einem der Schnittpunkte des gezeichneten Bogens mit dem ursprünglichen Kreis. Zeichnen Sie einen weiteren Bogen, der den Kreis ebenfalls an 2 Punkten schneidet (einer davon fällt mit dem Punkt der vorherigen Position der Kompassnadel zusammen).

6. Ordnen Sie auf ähnliche Weise die Nadel des Kompasses neu an und zeichnen Sie noch viermal Bögen. Bewegen Sie den Zirkelschenkel mit der Nadel in eine Richtung um den Umfang (immer im oder gegen den Uhrzeigersinn). Als Ergebnis müssen sechs Schnittpunkte von Bögen mit dem ursprünglich konstruierten Kreis identifiziert werden.

7. Zeichnen Sie ein positives Sechseck. Verbinden Sie die sechs Punkte, die Sie im vorherigen Schritt erhalten haben, schrittweise paarweise. Zeichnen Sie die Liniensegmente mit Bleistift und Lineal. Als Ergebnis wird das richtige Sechseck erhalten. Später darf die Konstruktion Hilfselemente (Bögen und Kreise) löschen.

Beachten Sie!
Es ist gut, einen solchen Abstand zwischen den Beinen des Kompasses so zu wählen, dass der Winkel zwischen ihnen 15-30 Grad beträgt, im Gegenteil, dieser Abstand kann beim Bauen leicht verloren gehen.

Beim Erstellen oder Entwickeln von Wohndesignplänen ist es oft erforderlich, zu bauen Injektion, gleich der näher verfügbaren. Muster und schulische Geometriekenntnisse kommen zur Unterstützung.

Anweisungen

1. Ein Winkel wird durch zwei Geraden gebildet, die von einem Punkt ausgehen. Dieser Punkt wird als Eckpunkt der Ecke bezeichnet, und die Linien sind die Seiten der Ecke.

2. Verwenden Sie drei Buchstaben, um die Ecken anzugeben: einen oben, zwei an den Seiten. Werden genannt Injektion, beginnend mit dem Buchstaben, der auf der einen Seite steht, dann wird der oben stehende Buchstabe aufgerufen und danach der Buchstabe auf der anderen Seite. Verwenden Sie andere Methoden zum Markieren von Winkeln, wenn Sie mit dem Gegenteil vertrauter sind. Gelegentlich wird nur ein Buchstabe genannt, der ganz oben steht. Und es ist erlaubt, Winkel mit griechischen Buchstaben zu bezeichnen, sagen wir, α, β, γ.

3. Es gibt Situationen, in denen Sie zeichnen müssen Injektion so dass es näher am angegebenen Winkel liegt. Wenn beim Erstellen einer Zeichnung keine Wahrscheinlichkeit besteht, einen Winkelmesser zu verwenden, ist dies nur mit Lineal und Zirkel zulässig. Es ist möglich, auf der in der Zeichnung mit den Buchstaben MN markierten Geraden zu errichten Injektion am Punkt K, so dass er gleich dem Winkel B ist. Das heißt, vom Punkt K aus müssen Sie eine gerade Linie zeichnen, die mit der Linie MN . gebildet wird Injektion, die gleich dem Winkel B ist.

4. Streichen Sie zu Beginn an einem Punkt auf der gesamten Seite dieser Ecke entlang, beispielsweise die Punkte A und C, und kombinieren Sie dann die Punkte C und A mit einer geraden Linie. Holen Sie sich Injektion Nick ABC.

5. Baue nun auf der Linie MN die gleichen drei Injektion eine Kerbe, so dass ihr Scheitelpunkt B auf der Linie im Punkt K liegt. Verwenden Sie die Regel zum Konstruieren eines Baumes Injektion nika auf drei seiten. Legen Sie das Segment KL vom Punkt K beiseite. Es muss gleich dem BC-Segment sein. Holen Sie sich Punkt L.

6. Zeichnen Sie einen Kreis von Punkt K mit einem Radius gleich dem Segment BA. Zeichne einen Kreis von L mit Radius CA. Kombinieren Sie den erhaltenen Schnittpunkt (P) von 2 Kreisen mit K. Injektion Spitzname KPL, der gleich drei ist Injektion Nick ABC. Also bekommst du Injektion K. Er wird gleich dem Winkel B sein. Um diese Konstruktion bequemer und schneller zu machen, legen Sie gleiche Segmente von oben B ab, verwenden Sie eine Kompasslösung, ohne die Beine zu bewegen, beschreiben Sie einen Kreis mit dem gleichen Radius von Punkt K.

Ähnliche Videos

Beachten Sie!
Vermeiden Sie eine versehentliche Metamorphose des Abstands zwischen den Beinen des Kompasses. In diesem Fall kann sich das Sechseck als falsch herausstellen.

Hilfreicher Rat
Er ist gut darin, Konstruktionen mit einem Zirkel mit perfekt geschärfter Mine herzustellen. Dadurch werden die Konstruktionen besonders genau.

Gibt es einen Bleistift in Ihrer Nähe? Schauen Sie sich seinen Schnitt an - es ist ein regelmäßiges Sechseck oder, wie es auch genannt wird, ein Sechseck. Der Querschnitt einer Nuss, ein sechseckiges Schachfeld, einige komplexe Kohlenstoffmoleküle (zum Beispiel Graphit), eine Schneeflocke, eine Wabe und andere Gegenstände haben auch diese Form. Vor kurzem wurde ein riesiges regelmäßiges Sechseck entdeckt Lasst uns genauer hinschauen.

Ein regelmäßiges Sechseck ist ein Vieleck mit sechs gleichen Seiten und gleichen Winkeln. Aus dem Schulkurs wissen wir, dass es folgende Eigenschaften hat:

  • Die Länge seiner Seiten entspricht dem Radius des umschriebenen Kreises. Ausgerechnet ein regelmäßiges Sechseck hat diese Eigenschaft.
  • Die Winkel sind gleich und der Betrag beträgt jeweils 120°.
  • Der Umfang eines Sechsecks ergibt sich aus der Formel P = 6 * R, wenn der Radius des umschriebenen Kreises bekannt ist, oder P = 4 * √ (3) * r, wenn der Kreis darin eingeschrieben ist. R und r sind die Radien des Umkreises und des Innenkreises.
  • Die von einem regelmäßigen Sechseck eingenommene Fläche wird wie folgt bestimmt: S = (3 * √ (3) * R 2) / 2. Wenn der Radius unbekannt ist, ersetzen wir stattdessen die Länge einer der Seiten - sie entspricht bekanntlich der Länge des Radius des umschriebenen Kreises.

Das regelmäßige Sechseck hat eine interessante Eigenschaft, die es in der Natur so weit verbreitet hat - es ist in der Lage, jede Oberfläche des Flugzeugs ohne Überlappungen und Lücken auszufüllen. Es gibt sogar das sogenannte Pal-Lemma, wonach ein regelmäßiges Sechseck mit einer Seite gleich 1 / √ (3) eine universelle Abdeckung ist, dh jede Menge mit einem Durchmesser von einer Einheit abdecken kann.

Betrachten wir nun den Aufbau eines regelmäßigen Sechsecks. Es gibt mehrere Möglichkeiten, von denen die einfachste die Verwendung eines Zirkels, eines Bleistifts und eines Lineals ist. Zuerst zeichnen wir mit einem Zirkel einen beliebigen Kreis, dann machen wir an einer beliebigen Stelle auf diesem Kreis einen Punkt. Ohne die Auflösung des Kompasses zu ändern, setzen wir die Spitze an dieser Stelle, markieren die nächste Kerbe auf dem Kreis und fahren so fort, bis wir alle 6 Punkte haben. Jetzt müssen Sie sie nur noch mit geraden Segmenten verbinden und Sie erhalten die gewünschte Figur.

In der Praxis gibt es Zeiten, in denen Sie ein großes Sechseck zeichnen müssen. An einer zweistöckigen Gipskartondecke müssen Sie beispielsweise um den Befestigungspunkt des zentralen Kronleuchters sechs kleine Lampen auf der unteren Ebene installieren. Es wird sehr, sehr schwierig sein, einen Kompass dieser Größe zu finden. Was ist in diesem Fall zu tun? Wie zeichnet man überhaupt einen großen Kreis? Sehr einfach. Sie müssen einen starken Faden der erforderlichen Länge nehmen und eines seiner Enden gegenüber dem Bleistift binden. Jetzt muss nur noch ein Helfer gefunden werden, der das zweite Fadenende an der gewünschten Stelle an die Decke drückt. Natürlich sind in diesem Fall kleinere Fehler möglich, die aber für einen Außenstehenden kaum auffallen.



Ähnliche Veröffentlichungen