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 , w
wo h
war 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?
quelle
Antworten:
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).
quelle
sqrt(3)=1.7320508075688772
ist (sagen wir) adouble
und kann sicherlich als Verhältnis von ganzen Zahlen ausgedrückt werden (138907099/80198051).NaN
s sinddoubles
, 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.Nur für den Fall, dass jemand interessiert ist:
Nehmen wir an, sqrt (3) ist rational:
a
und vorhanden seinb
derart , dassa/b
= sqrt (3)a
undb
(a/b)^2 = 3
und deshalba^2 = 3 * b^2
.3 * b^2
ist durch 3 als teilbarb^2
Integrala^2
teilbar und daher auch durch 3 teilbar.a
Daraus selbst durch 3 teilbar ist. Definieren wirk = a/3
.a^2 = (3k)^2 = 3 * b^2
=>9 * k^2 = 3 * b^2
=>3 * k^2 = b^2
was bedeutet, dass diesb
auch durch 3 teilbar ist.Dank an Wikipedie für die Auffrischung meines Gedächtnisses.
quelle
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.
quelle