Estou tentando descobrir a largura e a altura ideais (em pixels) para começar a construir blocos hexadecimais para o desenvolvimento de jogos. Minha preferência é por grades hexagonais "planas", mas a matemática é semelhante para ambas.
Estou procurando um tamanho de bloco "ideal" que permita que a largura e a altura do bloco sejam um número de pixel arredondado, com base no fato de que height = sqrt(3)/2 * width
.
Como minhas habilidades matemáticas eram praticamente inexistentes, apenas executei um script de força bruta que percorreu larguras de 1 a 1024 e não apresentou um único valor para w
onde h
estava um número inteiro. É este realmente o caso? Como alguém cria blocos hexadecimais perfeitos para pixels se não há tamanho uniforme de largura e altura que possa acomodar uma proporção perfeita de aspecto hexadecimal?
fonte
Respostas:
Não. √3 é um número irracional e, por definição, um número irracional não pode ser usado como uma razão entre dois números naturais (números inteiros) , como a contagem de pixels.
No entanto, não existe uma regra que diga que você deve usar hexágonos ideais nas peças do seu jogo. Se você o aproximar de perto e evitar erros de cálculo que possam resultar, o que você pode fazer com matemática inteira de qualquer maneira, poderá obter um produto de boa aparência enquanto trabalha com números fáceis nos bastidores (se você pode chamar de fácil 100 e 173 trabalhar com).
fonte
sqrt(3)=1.7320508075688772
é (digamos) adouble
e certamente pode ser expresso como uma razão de números inteiros (138907099/80198051).NaN
s sãodoubles
, mas não são racionais. A resposta afirma que "sqrt(3)
é um número irracional", que é falso no contexto da programação. Eu estava tentando fazer uma distinção entre números de computadores e números reais.Apenas no caso de alguém estar interessado:
Vamos supor que o sqrt (3) seja racional:
a
eb
tais quea/b
= sqrt (3)a
eb
(a/b)^2 = 3
e, portantoa^2 = 3 * b^2
.3 * b^2
é divisível por 3 comob^2
é integral e, portanto,a^2
também é divisível por 3.a
ele próprio é divisível por 3. Vamos definirk = a/3
.a^2 = (3k)^2 = 3 * b^2
=>9 * k^2 = 3 * b^2
=> o3 * k^2 = b^2
que significa queb
também é divisível por 3.Créditos à wikipedie por refrescar minha memória.
fonte
Muitas respostas complexas aqui. Se você estiver procurando por uma resposta "Perto o suficiente", tente 7x8. Não é um hexágono perfeito, mas perto o suficiente para que a maioria das pessoas não perceba a diferença.
fonte