Es ist einfach, mit der Interaktion von Standorten in einem sauberen kartesischen Raster umzugehen. Es ist nur Vanille-Mathe. Und Sie können die Geometrie der Kugeloberfläche für einige ignorieren, wenn Sie nur die Pole oder etwas abschneiden möchten. Aber ich habe immer wieder Ideen für Spiele, bei denen es auf den Polarraum ankommt. Geocodierte ARGs und globale Roguelikes und so.
Ich möchte quadratische (ish?) Standorte, die durch quadratische Kacheln mit der gleichen Größe auf der ganzen Welt einigermaßen darstellbar sind.
Das muss ein gelöstes Problem sein, oder?
Was sind die Lösungen?
ETA:
Am Äquator - und unter der Annahme, dass Ihre quadratischen Positionen relativ klein sind, ist es nah genug, dass Sie davonkommen können, wenn Sie ein Quadrat in den Reihen nördlich und südlich der äquatorialsten Reihe haben. Und Sie könnten wahrscheinlich damit durchkommen, indem Sie den Unterschied von Hand auf ungefähr 45 Grad erhöhen. Aber irgendwann müssen Sie weniger Quadrate in einer umlaufenden Polreihe haben. Wenn ich die Länge der Zeile um eins reduziere und die Quadrate um 1/2 versetze, sind sie wie Hexes und es ist relativ einfach, die Codierung vorzunehmen, um die Verbindungen zu verfolgen. Aber wenn man auf die Pole-Station kommt, wird es immer extremer.
Die Oberfläche der Welt auf die Oberfläche eines Würfels zu projizieren, ist verlockend. Aber ich dachte mir, dass es schon elegantere Lösungen geben muss.
Wenn ich den Würfel gemacht habe (ihn nicht durch Geodäsie weiter zerlegt habe) Gibt es Vor- und Nachteile, wenn ich den Stab in der Mitte eines Gesichts oder am Scheitelpunkt von drei Seiten platziere?
quelle
Antworten:
Ich denke, Sie suchen ein geodätisches Gitter . Viele Menschen nähern sich der Erde mit einem Würfel:
Carlos A. Furuti hat viele Karten der Erde, die sich zu einem Würfel zusammenfalten
Möglicherweise interessiert Sie auch die Projektion The Peirce quincuncial, die die gesamte Erde auf ein oder zwei Quadrate abbildet.
Das Ikosaeder (Dymaxion-Map; "Was ist der beste Weg, eine Kugel zu pixelisieren?" ) Verzerrt etwas weniger, ist aber komplizierter.
quelle
Ich wollte schon immer ein Spiel sehen, bei dem auf der sphärischen Karte ein normales Polyeder verwendet wurde, anstatt die Welt auf einem Torus zu spielen. Diese Technik wird als Dymaxion-Karte bezeichnet . (Quelle: grunch.net )
Ich würde ein Ikosaeder empfehlen . Plotten Sie das aktuelle Dreieck so, dass es an einer Kante eines Quadrats ausgerichtet ist. Wenn der Spieler das Dreieck verlässt, ziehen Sie das nächste Dreieck nach oben und ordnen Sie es wieder identisch zu. Die Koordinaten des Spielers werden dann dem neuen Abschnitt zugeordnet. Jeder Abschnitt Ihrer Karte hat also ein eigenes Koordinatensystem. Außerdem müssen Sie den Hintergrund für die 3 angrenzenden und 9 halb angrenzenden Abschnitte zeichnen. Ich glaube nicht, dass der Benutzer feststellen kann, wie es implementiert ist, wenn es gut gemacht ist.
Hier ist ein Beispiel, wie dies funktionieren könnte.
Nachdem Sie dies gelesen haben, werden Sie wahrscheinlich die klassische Torus-Karte verwenden und ich werde darauf warten, ein echtes polyedrisches Universum zu sehen.
quelle
Wenn Sie eine Kugel mit einer geodätischen Basis erstellen, wird der polare Bereich in Bezug auf den Scheitelpunktabstand nicht anders behandelt als jeder andere Bereich, was eine gleichmäßige UV-Kartierung erleichtert.
Mit den meisten Modellierungs-Apps können Sie ein Kugelprimitiv mit einem geodätischen Design erstellen.
quelle
Es gibt keine Möglichkeit, eine Kugel mit Quadraten (oder Rechtecken) "abzubilden" und sie alle an "gemeinsamen" Eckpunkten zusammenzufügen.
Wäre es jedoch machbar, die "lokale Sicht" bei Bedarf zu generieren? Der Problemraum wird in der Frage nicht wirklich angegeben, aber wenn ich an etwas arbeite, bei dem ich eine Stadtansicht haben möchte, aber die Welt drehen möchte, kann ich vorübergehend nur ein Raster auf einen "ebenen" Abschnitt von abbilden die Welt. Der Ursprung des Gitters wäre dort, wo sich Ihr lokales Zentrum befand, und die Normalen an diesem Punkt stimmen mit der Normalen auf der Oberfläche des Planeten überein.
Wenn man dann das Netz verlässt, wird bei Bedarf ein neuer generiert.
Dies kann für das OP funktionieren oder nicht, aber für einige kann es nützlich sein.
quelle
Nehmen Sie einen Würfel, wobei der Abstand zwischen den Eckpunkten und der Mitte des Würfels dem gewünschten Radius entspricht. Sie haben eine Kugel aus 6 Quadraten.
Nehmen Sie nun in jedem Schritt jedes Quad, teilen Sie es in 4 und verschieben Sie die neuen 5 Eckpunkte (einer in der Mitte und 4 an den Rändern - Warnung, sie sind GEMEINSAM) von der Mitte weg, so dass sie das gewünschte mögen Radius.
Nein, diese Methode ist nicht perfekt, aber es ist zumindest eine mehr oder weniger gleichmäßige Verteilung über die Kugel.
quelle
Mit dem Dymaxion Max haben Sie Sechsecke in Dreiecken auf einer ebenen Fläche angeordnet, aber weil die Karte nicht wirklich flach ist, sind sie Fünfecke. Wenn Sie möchten, dass der Player beim Überqueren bestimmter Bereiche die Orientierung beibehält, müssen Sie die Positionskarten von der tatsächlichen Speicherung trennen. Für Objekte wie Gebäude können Sie eine kleine Karte mit Rechteckvektoren speichern und diese dann mit aller Kraft in der gewünschten Ausrichtung zeichnen.
Sie müssten das Innere nicht immer so aussehen lassen, als hätte es kürzlich ein Erdbeben gegeben, denn ich denke, der durchschnittliche Spieler sollte nicht einmal die Augen darüber aufschlagen, eine Tür im Nordosten zu betreten, sondern einen Bildschirm mit der darauf ausgerichteten Vordertür betreten Süden und das ganze Gebäude in einem regelmäßigen Raster.
Wenn Sie jedoch nur Gebäude und wichtige Orte wie dieses lagern, haben Sie trotzdem die ganze Arbeit für ein Fußballmuster geleistet. Das Endergebnis ist, dass Sie die Welt als ein nicht quadratisches Muster speichern und sie dann in ein solches Gitter zwingen, wo immer sich der Spieler gerade befindet.
Es gibt jedoch eine andere Alternative: Wenn Sie ihnen nicht so genau einen Hinweis auf die Kugel geben, wie wenn Sie ihnen nur einen Kompass mit geringer Genauigkeit geben, um ihnen mitzuteilen, welche der vier orthogonalen Richtungen dem Norden am nächsten liegt, können Sie davonkommen mit nur 90-Grad-Drehungen für jeden Ort, zu dem der Spieler gegangen ist. Angesichts der angenommenen Grafikebene ist es nicht so, als müsste man sich Sorgen machen, dass ein hohes Gebäude eine Tür verdeckt. Solange sie wussten, ob sie sich in der Nähe der Pole befanden oder nicht, sollten sie sich nicht zu sehr darüber aufregen, dass sich der Kompass auf ihnen ändert, es sei denn, die dortigen NPCs forderten sie auf, nach Nordosten zu fahren, oder sie versuchen, tatsächlich zu bestimmten Breiten- und Längenkoordinaten zu gelangen .
quelle
Sie stellen eine Frage, die sich Menschen, die Karten herstellen, schon lange gestellt haben haben :)
Auf jeden Fall sollten Sie sich bei Map Projectsions informieren , um einige Erkenntnisse und Ideen zu erhalten, die hilfreich sein könnten. Über die Herausforderung, die Oberfläche einer Kugel auf / mit einer flachen 2D-Ebene darzustellen, haben die Menschen lange nachgedacht.
Die kurze Antwort lautet: Nein, das können Sie nicht. Das ist der Grund, warum beim Betrachten von Weltkarten einige Teile verzerrt sind und andere nicht. Normalerweise sind es die Pole, weil sich die meisten Karten um unpolare Gebiete handeln.
Wie andere Antworten bereits sagten, besteht die Antwort darin, entweder eine andere Form (z. B. Sechsecke oder Dreiecke) zu verwenden oder Ihre Karte dynamisch im Handumdrehen für den aktuellen Standpunkt des Benutzers zu generieren.
Quadratische Kacheln sind ziemlich einfach zu verwalten, keine Frage, aber ich denke nicht, dass das Erstellen einer hexadezimalen Kachelkarte so schwierig ist.
Hier ist ein älterer Artikel von GameDev.net, den Sie vielleicht nützlich finden. Es geht darum, isometrische und hexagonale Kacheln in einem Raster zu erstellen.
http://www.gamedev.net/reference/articles/article747.asp
Googeln "Fliesen hex Karte" gibt Ihnen eine Menge Treffer, einige nützlich, andere nicht.
quelle
Ich verwende mehrere PTZ-Netzwerkkameras von Sony, Modell SNC-RX570N, um sich bewegende Objekte am Himmel zu verfolgen und zu triangulieren, um echte 3D-Spuren zu erhalten. Einer der Aspekte der Ersteinrichtung besteht darin, unbeaufsichtigte "Touren" zu definieren, für die Wegpunkte ausgewählt werden müssen. Es gibt eine begrenzte Anzahl solcher programmierbarer Wegpunkte, und ich möchte die gesamte Hemisphäre (die "Himmelssphäre") vom Horizont bis zum Zenit abdecken, ohne Lücken zu lassen.
Deshalb habe ich mir die Frage gestellt, wie viele Wegpunkte ich mindestens für die vollständige Abdeckung benötige (keine Lücken). Ich habe festgestellt, dass ich das tatsächlich nicht vollständig herausfinden kann.
Die Kamera verfügt über eine endlose Schwenkung (360 °) und eine Neigung von 0-90 °, sodass theoretisch eine vollständige Abdeckung möglich ist. Das für Computer vorgesehene Kamera-Display hat ein rechteckiges Seitenverhältnis von 4: 3. Grobe horizontale FOV bei 1x Zoom ist 58 Grad.
Es gibt zwei Arten, das Problem darzustellen, je nachdem, welche Projektion man wählt: - geradlinig wie Mercator, wobei der Horizont "der Äquator" und der Zenit "der Pol" ist und über 360 Grad der Pfanne erweitert ist. - polar, wobei der Horizont der Umfang des Kreises und der Zenit der Mittelpunkt des Kreises ist.
Polar finde ich den einfachsten Weg, um das Problem anzugehen. Ich kann den Kreis in horizontale FOV-große Tortenscheiben zerlegen, und dies sagt mir, dass ich 7 Wegpunkte um den Kreis mit diesem 58-Grad-H-FOV benötige. So weit, ist es gut. Der innere Radius ist einfach die Neigung oder das V-FOV, was 3/4 von 58 Grad ist. So weit so gut - ich habe die äußersten Teile des Kreises abgedeckt.
Aber es wird schwieriger, wenn wir uns dem Zenit nähern. Ich gehe davon aus, dass einer meiner Wegpunkte genau im Zenit liegt. Wie ordne ich mein Ansichtsrechteck der Region um den Mittelpunkt des Kreises zu? Ist diese Form ein Rechteck, eine Ellipse, ein Nadelkissen oder was? Wie fülle ich das mittlere Bit zwischen der hübschen, sauberen Außendecke und dieser merkwürdigen Form im Zenit aus? Flummoxed.
Ich stelle fest, dass der Raumwinkel einer Hemisphäre 2 * PI-Steradiane beträgt und dass mein FOV bei 1x Zoom 0,762 st beträgt, was bedeutet, dass ich mindestens 9 Tessellationen benötige. Ich vermute, die Antwort ist höher als 9.
quelle
Wenn Sie ein weltweites Gitter erstellen möchten, schlage ich vor, dass Sie den Planeten in Länder oder Kontinente aufteilen und jeweils ein quadratisches Gitter erstellen, das genau darauf ausgerichtet ist. Lassen Sie den Ozean die Nähte bedecken.
quelle