Gibt es Hex-Kachelgrößen, bei denen sowohl Breite als auch Höhe ganze Zahlen sind?

8

Ich versuche, die optimale Breite und Höhe (in Pixel) herauszufinden, um Hex-Kacheln für die Spieleentwicklung zu erstellen. Ich bevorzuge Hex-Gitter mit "flachen Spitzen", aber die Mathematik ist für beide ähnlich.

Ich suche nach einer "optimalen" Kachelgröße, die es ermöglicht, dass sowohl die Breite als auch die Höhe der Kachel eine gerundete Pixelzahl sind, basierend auf der Tatsache, dass height = sqrt(3)/2 * width.

Meine mathematischen Fähigkeiten praktisch nicht existent zu sein, ich lief nur einen Brute - Force - Skript , das RAN durch Breiten 1-1024 und nicht mit einem einzigen Wert kommen hat , wwo hwar eine ganze Zahl. Ist das wirklich der Fall? Wie kann jemand pixelgenaue Hex-Kacheln erstellen, wenn es keine gleichmäßige Breite und Höhe gibt, die ein perfektes Hex-Seitenverhältnis aufnehmen kann?

Tom Auger
quelle
7
Dies ist für das Gameplay nicht wichtig. Es ist eine Form des Aufschubs. Wenn es Ihnen sehr wichtig ist, suchen Sie nach der engsten Übereinstimmung anstelle einer tatsächlichen Anpassung.
AturSams
1
Du hast "Pixel" gesagt, oder? Sie sprechen also über Programmierung? Intern würden Sie mit Ints arbeiten, um zu sagen, in welcher Zelle Sie sich befinden (es sollten Online-Ressourcen zu Hex-Gittern vorhanden sein), und das Zeichnen der Linien erfolgt durch den Computer. (Denken Sie: Sie können auch keinen Kreis zeichnen.)
Leez
1
Wenn Sie ein neugieriger Typ sind, lesen Sie dies auf jeden Fall mit der Aufschrift "Beweis durch unendliche Abstammung". Nur Strg + F, um es zu finden.
AturSams
1
@Zehelvion haha ​​und JETZT weiß ich, was du mit "Aufschub" meinst - ich verbringe nur die letzten 2 Stunden damit, die irrationalen Zahlen Yak zu rasieren und KEIN Hex-Tile-basiertes Spiel zu erstellen.
Tom Auger
1
Das muss ein ziemlicher Yak sein, da sein Vlies bei dezimaler Darstellung immer weiter geht und niemals das gleiche Muster (wirklich) wiederholt. Ich erinnerte mich nicht an diesen Hinweis von Ren & Stimpy; Es ist gut zu wissen. :)
AturSams

Antworten:

16

Nr. √3 ist eine irrationale Zahl , und per Definition kann eine irrationale Zahl nicht als Verhältnis zwischen zwei natürlichen Zahlen (ganzen Zahlen) wie Pixelzahlen verwendet werden.

Es gibt jedoch keine Regel, die besagt, dass Sie in Ihren Spielplättchen ideale Sechsecke verwenden müssen. Wenn Sie es genau approximieren und eventuelle Fehlkalkulationen vermeiden, die Sie ohnehin mit ganzzahliger Mathematik machen sollten, können Sie ein gut aussehendes Produkt erhalten, während Sie hinter den Kulissen mit einfachen Zahlen arbeiten (wenn Sie 100 und 173 einfach anrufen können arbeiten mit).

Seth Battin
quelle
Schön, aber √3 ist die irrationale Zahl sqrt(3)=1.7320508075688772ist (sagen wir) a doubleund kann sicherlich als Verhältnis von ganzen Zahlen ausgedrückt werden (138907099/80198051).
Sean D
@SeanD Jede Zahl, die als Double oder Float dargestellt wird, ist eine rationale Zahl. Ich sehe nicht, wohin du damit gehst?
AturSams
NaNs sind doubles, aber sie sind nicht rational. Die Antwort besagt " sqrt(3)ist eine irrationale Zahl", was im Zusammenhang mit der Programmierung falsch ist. Ich habe versucht, zwischen Computernummern und reellen Zahlen zu unterscheiden.
Sean D
@ SeanD Guter Punkt, Computer speichern eine enge rationale Annäherung an irrationale Zahlen. Tatsächlich speichern Computer für die meisten rationalen Zahlen auch eine enge rationale Annäherung. Sie könnten also ein "perfektes" Sechseck in Bezug auf die begrenzte Computerpräzision haben. Wir können nur 2 ^ (numOfBits) möglicher Zahlen im Speicher speichern, und es gibt unendlich viele rationale Zahlen zwischen 0,1 und 1, geschweige denn irrationale Zahlen, von denen es eine größere unendliche Menge gibt.
AturSams
2
Vielen Dank, dass Sie das Zeichen √ für mich gefunden haben. Ich werde es in meine Antwort aufnehmen, damit wir uns nicht über Gleitkommapräzision streiten müssen.
Seth Battin
4

Nur für den Fall, dass jemand interessiert ist:

Nehmen wir an, sqrt (3) ist rational:

  1. Daher müssen zwei ganzzahlige Zahlen aund vorhanden seinb derart , dass a/b= sqrt (3)
  2. Wir nehmen an, dass diese Zahlen Koprime sind. Wenn sie einen gemeinsamen Faktor haben, dividieren wir durch sie und erzeugen ein Koprime-Paar. a undb
  3. Wir wissen das (a/b)^2 = 3 und deshalb a^2 = 3 * b^2.
  4. 3 * b^2 ist durch 3 als teilbar b^2 Integral a^2teilbar und daher auch durch 3 teilbar.
  5. Es gibt keine ganzzahligen Quadrate, die durch 3 teilbar sind, aber sie sind es nicht. Daraus folgtaDaraus selbst durch 3 teilbar ist. Definieren wir k = a/3.
  6. a^2 = (3k)^2 = 3 * b^2=> 9 * k^2 = 3 * b^2=>3 * k^2 = b^2 was bedeutet, dass dies bauch durch 3 teilbar ist.
  7. Dies widerspricht der Grundannahme, dass es sich um Coprime-Ganzzahlen handelt.

Dank an Wikipedie für die Auffrischung meines Gedächtnisses.

AturSams
quelle
Angeben! ;-) +1 für die Aktualisierung meiner Memoey
Pieter Geerkens
@PieterGeerkens :) danke, ich konnte mich an die Hälfte erinnern (aus Kalkül 1), fand dann aber heraus, dass es im Wiki wirklich gut erklärt wurde.
AturSams
1

Viele komplexe Antworten hier. Wenn Sie nach einer Antwort suchen, die nah genug ist, versuchen Sie es mit 7x8. Kein perfektes Sechseck, aber nah genug, dass die meisten Menschen den Unterschied nicht bemerken.

GB Lautlos
quelle