J'essaie de déterminer la largeur et la hauteur optimales (en pixels) pour commencer à construire des tuiles hexagonales pour le développement du jeu. Ma préférence va aux grilles hexagonales "à sommet plat", mais les calculs sont similaires pour les deux.
Je recherche une taille de tuile "optimale" qui permette à la fois la largeur et la hauteur de la tuile d'être un nombre de pixels arrondis, basé sur le fait que height = sqrt(3)/2 * width
.
Mes compétences en mathématiques étant pratiquement inexistantes, je viens d'exécuter un script de force brute qui s'étendait sur des largeurs de 1 à 1024 et n'a pas trouvé de valeur unique pour w
où h
était un entier. Est-ce vraiment le cas? Comment peut-on créer des carreaux hexagonaux parfaits en pixels s'il n'y a pas de largeur et de hauteur égales pouvant accueillir un rapport d'aspect hexadécimal parfait?
la source
Réponses:
Non. √3 est un nombre irrationnel , et par définition, un nombre irrationnel ne peut pas être utilisé comme un rapport entre deux nombres naturels (entiers) tels que le nombre de pixels.
Cependant, aucune règle ne dit que vous devez utiliser des hexagones idéaux dans vos tuiles de jeu. Si vous vous en approchez de près et évitez les erreurs de calcul qui pourraient en résulter, ce que vous devriez de toute façon être capable de faire avec des mathématiques entières, vous pouvez obtenir un bon produit tout en travaillant avec des nombres faciles en arrière-plan (si vous pouvez appeler 100 et 173 facile travailler avec).
la source
sqrt(3)=1.7320508075688772
est (disons) adouble
, et peut certainement être exprimé comme un rapport d'entiers (138907099/80198051).NaN
s le sontdoubles
, mais ils ne sont pas rationnels. La réponse prétend "sqrt(3)
est un nombre irrationnel" ce qui est faux dans le contexte de la programmation, j'essayais de faire une distinction entre les nombres informatiques et les nombres réels.Juste au cas où quelqu'un serait intéressé:
Supposons que sqrt (3) soit rationnel:
a
etb
tels quea/b
= sqrt (3)a
etb
(a/b)^2 = 3
et donca^2 = 3 * b^2
.3 * b^2
est divisible par 3 commeb^2
est intégrale eta^2
est donc également divisible par 3.a
lui - même est divisible par 3. Permet de définirk = a/3
.a^2 = (3k)^2 = 3 * b^2
=>9 * k^2 = 3 * b^2
=>3 * k^2 = b^2
ce qui signifie que celab
est également divisible par 3.Crédits à wikipedie pour rafraîchir ma mémoire.
la source
Beaucoup de réponses complexes ici. Si vous cherchez une réponse «assez proche», essayez 7x8. Pas un hexagone parfait, mais suffisamment proche pour que la plupart des gens ne remarquent pas la différence.
la source