¿Hay algún tamaño de mosaico hexagonal donde el ancho y la altura sean enteros?

8

Estoy tratando de averiguar el ancho y la altura óptimos (en píxeles) para comenzar a construir mosaicos hexagonales para el desarrollo del juego. Prefiero las cuadrículas hexagonales de "superficie plana", pero las matemáticas son similares para ambas.

Estoy buscando un tamaño de mosaico "óptimo" que permita que tanto el ancho como la altura del mosaico sean un número de píxel redondeado, basado en el hecho de que height = sqrt(3)/2 * width.

Mis habilidades matemáticas son prácticamente inexistentes, solo ejecuté un script de fuerza bruta que corría a través de anchos de 1 a 1024 y no se me ocurrió un solo valor de wdónde hera un número entero. ¿Es este realmente el caso? ¿Cómo puede alguien crear mosaicos hexagonales perfectos si no hay un ancho y un tamaño de altura que puedan acomodar una relación de aspecto hexagonal perfecta?

Tom Auger
fuente
77
Esto no es importante para el juego. Es una forma de dilación. Si es muy importante para usted, busque la coincidencia más cercana en lugar de un ajuste real.
AturSams
1
Dijiste "píxel", ¿verdad? ¿Entonces estás hablando de programación? Internamente, trabajaría con ints para decir en qué celda se encuentra (debe haber recursos en línea sobre cuadrículas hexadecimales), y la computadora hará el dibujo de las líneas. (Piensa: tampoco puedes dibujar un círculo).
leewz
1
Si eres un tipo curioso, entonces lee esto donde dice "Prueba por descendencia infinita". Simplemente Ctrl + f para encontrarlo.
AturSams
1
@Zehelvion jaja y AHORA sé a qué te refieres con "procrastinación": acabo de pasar las últimas 2 horas afeitando los números irracionales de yak y NO creando un juego basado en fichas hexagonales.
Tom Auger
1
Eso debe ser un gran yak, ya que su vellón sigue y sigue cuando se representa decimalmente y nunca repite el mismo patrón (en realidad). No recordaba esa referencia de Ren & Stimpy; Es bueno saberlo. :)
AturSams

Respuestas:

16

No. √3 es un número irracional y, por definición, un número irracional no se puede usar como una relación entre dos números naturales (enteros) como el recuento de píxeles.

Sin embargo, no hay una regla que diga que tienes que usar hexágonos ideales en tus fichas de juego. Si lo aproxima de cerca y evita cualquier error de cálculo que pueda resultar, lo que debería poder hacer con las matemáticas enteras de todos modos, puede obtener un producto atractivo mientras trabaja con números fáciles detrás de escena (si puede llamar al 100 y 173 fácil trabajar con).

Seth Battin
fuente
Agradable, pero √3 es el número irracional sqrt(3)=1.7320508075688772es (digamos) a double, y ciertamente puede expresarse como una razón de enteros (138907099/80198051).
Sean D
@SeanD Cualquier número representado como doble o flotante es un número racional. No veo a dónde vas con esto?
AturSams
NaNs son doubles, pero no son racionales. La respuesta dice " sqrt(3)es un número irracional" que es falso en el contexto de la programación. Intenté establecer una distinción entre los números de computadora y los números reales.
Sean D
@SeanD Buen punto, las computadoras almacenan una aproximación racional cercana de números irracionales. De hecho, para la mayoría de los números racionales, las computadoras también almacenan una aproximación racional cercana. Entonces podría tener un hexágono "perfecto" en términos de la precisión limitada de la computadora. Solo podemos almacenar 2 ^ (numOfBits) de números posibles dentro de la memoria y hay una cantidad infinita de números racionales entre 0 .. 1, y mucho menos números irracionales de los cuales hay una cantidad infinita mayor.
AturSams
2
Gracias por localizar el personaje √ para mí; Lo incorporaré a mi respuesta para que no necesitemos discutir sobre la precisión de coma flotante.
Seth Battin
4

Por si alguien está interesado:

Supongamos que sqrt (3) es racional:

  1. Por lo tanto, debe haber dos números enteros ay btales que a/b= sqrt (3)
  2. Asumimos que estos números son coprimos, si tienen un factor común, lo dividimos por producir un par coprimo, ayb
  3. Lo sabemos (a/b)^2 = 3y por lo tanto a^2 = 3 * b^2.
  4. 3 * b^2es invisible por 3 como b^2es integral y, por a^2lo tanto, también es invisible por 3.
  5. No hay números enteros cuadrados es visible por 3, pero no lo son. por lo tanto, se deduce que aes en sí mismo 3. Puede definir k = a/3.
  6. a^2 = (3k)^2 = 3 * b^2=> 9 * k^2 = 3 * b^2=> lo 3 * k^2 = b^2que significa que btambién es visible por 3.
  7. Esto contradice la suposición básica de que son enteros coprimos.

Créditos a wikipedie para refrescar mi memoria.

AturSams
fuente
¡Presumir! ;-) +1 por refrescar mi memoria
Pieter Geerkens
@PieterGeerkens :) gracias, logré recordar la mitad (del Cálculo 1) pero luego descubrí que se explicaba muy bien en wiki.
AturSams
1

Muchas respuestas complejas aquí. Si está buscando una respuesta "lo suficientemente cerca", intente 7x8. No es un hexágono perfecto, pero lo suficientemente cerca como para que la mayoría de las personas no noten la diferencia.

GB silencioso
fuente