Ci sono dimensioni di piastrelle esadecimali in cui sia la larghezza che l'altezza sono numeri interi?


8

Sto cercando di capire la larghezza e l'altezza ottimali (in pixel) per iniziare a costruire tessere esadecimali per lo sviluppo del gioco. La mia preferenza è per le griglie esagonali "piatte", ma la matematica è simile per entrambi.

Sto cercando una dimensione "ottimale" della piastrella che consenta sia la larghezza che l'altezza della piastrella di essere un numero di pixel arrotondato, in base al fatto che height = sqrt(3)/2 * width.

Essendo le mie abilità matematiche praticamente inesistenti, ho appena eseguito uno script di forza bruta che attraversava larghezze da 1 a 1024 e non ha trovato un singolo valore per wdove hera un numero intero. È davvero così? Come si possono creare tessere esadecimali perfette per i pixel se non ci sono nemmeno le dimensioni di larghezza e altezza in grado di adattarsi a proporzioni esadecimali perfette?


7
Questo non è importante per il gameplay. È una forma di procrastinazione. Se è molto importante per te, cerca la corrispondenza più vicina anziché una misura reale.
AturSams,

1
Hai detto "pixel", vero? Quindi stai parlando di programmazione? Internamente, lavoreresti con gli ints per dire in quale cella ti trovi (dovrebbero esserci risorse online sulle griglie esadecimali) e il disegno delle linee sarà fatto dal computer. (Pensa: non puoi nemmeno disegnare un cerchio.)
leewz,

1
Se sei un tipo curioso, allora leggi questo dove dice "Prova di discesa infinita". Basta Ctrl + f per trovarlo.
AturSams,

1
@Zehelvion haha ​​e ORA so cosa intendi per "procrastinazione" - ho appena trascorso le ultime 2 ore a radere yak ai numeri irrazionali e NON a creare un gioco basato su hex-tile.
Tom Auger,

1
Deve essere piuttosto uno yak, dato che il suo pile continua all'infinito quando viene rappresentato in modo decimale e non ripete mai lo stesso schema (davvero). Non ricordavo quel riferimento di Ren & Stimpy; buono a sapersi. :)
AturSams,

Risposte:


16

No. √3 è un numero irrazionale e per definizione un numero irrazionale non può essere utilizzato come rapporto tra due numeri naturali (numeri interi) come i conteggi dei pixel.

Tuttavia, non esiste una regola che dice che devi usare gli esagoni ideali nelle tessere del gioco. Se lo si avvicina da vicino ed si evitano eventuali calcoli errati che possono derivare, cosa che si dovrebbe essere in grado di fare comunque con la matematica dei numeri interi, è possibile ottenere un prodotto di bell'aspetto mentre si lavora con numeri facili dietro le quinte (se si possono chiamare facilmente 100 e 173 lavorare con).


Bello, ma √3 è il numero irrazionale sqrt(3)=1.7320508075688772è (diciamo) a double, e può certamente essere espresso come un rapporto di numeri interi (138907099/80198051).
Sean D

@SeanD Qualsiasi numero rappresentato come doppio o float è un numero razionale. Non vedo dove stai andando con questo?
AturSams,

NaNlo sono doubles, ma non sono razionali. La risposta afferma che " sqrt(3)è un numero irrazionale" che è falso nel contesto della programmazione, stavo cercando di fare una distinzione tra numeri di computer e numeri reali.
Sean D

@SeanD Un buon punto, i computer memorizzano una stretta approssimazione razionale di numeri irrazionali. In effetti, per la maggior parte dei numeri razionali, i computer memorizzano anche una stretta approssimazione razionale. Quindi potresti avere un esagono "perfetto" in termini di limitata precisione del computer. Possiamo solo memorizzare 2 ^ (numOfBits) di possibili numeri nella memoria e c'è una quantità infinita di numeri razionali tra 0 .. 1, per non parlare dei numeri irrazionali di cui c'è una quantità infinita maggiore.
AturSams,

2
Grazie per aver individuato il carattere √ per me; Lo incorporerò nella mia risposta, quindi non abbiamo bisogno di discutere sulla precisione in virgola mobile.
Seth Battin,

4

Nel caso in cui qualcuno fosse interessato:

Supponiamo che sqrt (3) sia razionale:

  1. Pertanto, ci devono essere due numeri interi ae btali che a/b= sqrt (3)
  2. Partiamo dal presupposto che questi numeri sono coprimi, se hanno un fattore comune, ci dividiamo producendo una coppia coprimi aeb
  3. Lo sappiamo (a/b)^2 = 3e quindi a^2 = 3 * b^2.
  4. 3 * b^2è concepibile per 3 come b^2è integrale e quindi a^2è anche concepibile per 3.
  5. Non ci sono numeri interi quadrati è concepibile per 3, ma non lo sono. quindi ne consegue che esso astesso è concepibile per 3. Consente di definire k = a/3.
  6. a^2 = (3k)^2 = 3 * b^2=> 9 * k^2 = 3 * b^2=> 3 * k^2 = b^2che significa che bè anche concepibile per 3.
  7. Ciò contraddice l'assunto di base secondo cui sono interi coprimi.

Ringrazio wikipedie per aver rinfrescato la mia memoria.


Esibire! ;-) +1 per rinfrescare il mio memoey
Pieter Geerkens,

@PieterGeerkens :) grazie, sono riuscito a ricordarmene metà (da Calculus 1) ma poi ho scoperto che è stato spiegato molto bene nel wiki.
AturSams,

1

Molte risposte complesse qui. Se stai cercando una risposta "Abbastanza vicino", prova 7x8. Non un esagono perfetto, ma abbastanza vicino che la maggior parte delle persone non noterà la differenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.