Saya mencoba mencari lebar dan tinggi (dalam piksel) yang optimal untuk mulai membangun ubin hex untuk pengembangan game. Preferensi saya adalah untuk kisi hex "datar atasnya", tetapi perhitungannya sama untuk keduanya.
Saya mencari ukuran ubin "optimal" yang memungkinkan lebar dan tinggi ubin menjadi angka piksel bulat, berdasarkan fakta bahwa height = sqrt(3)/2 * width
.
Keterampilan matematika saya hampir tidak ada, saya hanya menjalankan skrip brute force yang membentang lebar dari 1 hingga 1024 dan tidak muncul dengan nilai tunggal untuk di w
mana h
bilangan bulat. Benarkah ini masalahnya? Bagaimana orang membuat ubin hex sempurna pixel jika tidak ada ukuran lebar & tinggi genap yang dapat mengakomodasi rasio aspek hex sempurna?
hexagonal-grid
Tom Auger
sumber
sumber
Jawaban:
√3 adalah bilangan irasional , dan menurut definisi bilangan irasional tidak dapat digunakan sebagai rasio antara dua bilangan alami (bilangan bulat) seperti jumlah piksel.
Namun, tidak ada aturan yang mengatakan Anda harus menggunakan hexagon yang ideal di ubin game Anda. Jika Anda memperkirakannya dengan cermat dan menghindari kesalahan perhitungan yang mungkin terjadi, yang harus Anda lakukan dengan matematika bilangan bulat, Anda bisa mendapatkan produk yang terlihat bagus sambil bekerja dengan angka mudah di belakang layar (jika Anda dapat memanggil 100 dan 173 dengan mudah bekerja dengan).
sumber
sqrt(3)=1.7320508075688772
adalah (katakanlah) adouble
, dan tentu saja dapat dinyatakan sebagai rasio bilangan bulat (138907099/80198051).NaN
Memangdoubles
, tetapi mereka tidak rasional. Jawabannya mengklaim "sqrt(3)
adalah bilangan irasional" yang salah dalam konteks pemrograman, saya mencoba menggambar perbedaan antara nomor komputer dan bilangan real.Kalau-kalau ada yang tertarik:
Anggap sqrt (3) rasional:
a
danb
sedemikian sehinggaa/b
= sqrt (3)a
danb
(a/b)^2 = 3
dan karenanyaa^2 = 3 * b^2
.3 * b^2
dapat dibagi 3 oleh karenab^2
tidak terpisahkan dan karenaa^2
itu juga dapat dibagi 3.a
sendiri dapat dilihat oleh 3. Mari kita mendefinisikank = a/3
.a^2 = (3k)^2 = 3 * b^2
=>9 * k^2 = 3 * b^2
=>3 * k^2 = b^2
yang berarti yangb
juga dapat dilihat oleh 3.Kredit ke wikipedie untuk menyegarkan ingatanku.
sumber
Banyak jawaban kompleks di sini. Jika Anda mencari jawaban 'Cukup dekat', coba 7x8. Bukan segi enam yang sempurna, tetapi cukup dekat sehingga kebanyakan orang tidak akan melihat perbedaannya.
sumber