Batas Dunia - (0, Ukuran) atau (-HalfSize, HalfSize)?

9

Saat membuat ruang permainan untuk memindahkan, menggambar, dan bertabrakan objek, apakah lebih baik memiliki titik (0,0), atau (0,0,0), berada di tengah-tengah ruang Anda, sehingga batas dunia adalah (-halfSize, halfSize), atau lebih baik berada di sudut jauh ruang Anda, jadi batasnya adalah (0, ukuran)?

Apa kelebihan dan kekurangan masing-masing, dan masalah apa yang mereka hadapi? Atau apakah itu benar-benar tidak penting?

Sepertinya detail kecil, tetapi saya ingin melihat apakah mungkin ada masalah besar yang mungkin saya abaikan.

GarrickW
sumber

Jawaban:

15

Tampaknya bagi saya bahwa memiliki pusat ruang Anda menjadi (0, 0, 0) lebih baik. Dengan asumsi Anda menggunakan format yang ditandatangani untuk mewakili posisi dalam ruang, pusat (0, 0, 0) memungkinkan Anda untuk menggunakan bagian negatif dan positif dari format Anda, yang dapat melakukan keajaiban untuk presisi untuk mengapung dan jangkauan untuk bilangan bulat yang ditandatangani . Ini mungkin tidak masalah untuk skala kecil, tetapi untuk skala besar itu dapat membuat perbedaan, yaitu, sebelum Anda harus datang dengan sistem yang sama sekali baru.

Hanya untuk mengklarifikasi: Mengingat bahwa Anda menciptakan dunia game, yang saya asumsikan sedang Anda render, format utama yang akan dikonversi menjadi float, seperti yang Anda ketahui, format yang ditandatangani. Dalam hal itu, Anda mungkin mendapatkan situasi di mana (0, Ukuran) tidak dapat diwakili, sedangkan (-HalfSize, HalfSize) bisa. Jika Anda tidak berencana membuat dan dapat memilih format yang sewenang-wenang, maka gunakan salah satu gaya, meskipun saya secara pribadi masih lebih suka gaya tersebut.

parar
sumber
+1, banyak simulasi fisika menggunakan rentang ini juga, kemungkinan karena alasan ini.
MichaelHouse
1
Referensi yang berguna: altdevblogaday.com/2012/02/22/…
leander
1
Juga cukup terkenal tetapi mungkin agak sulit bagi yang belum tahu: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Apa Yang Harus Diketahui Setiap Ilmuwan Mengenai Aritmatika Titik Apung"
leander
5

Itu tidak terlalu penting. Selama Anda konsisten sepanjang permainan Anda.

Saya percaya pendekatan yang lebih umum adalah membuat batas dunia terpusat di sekitar (0,0), yang berarti Anda akan mendapatkan batas Anda -halfSize, halfSize. Karena sebagian besar struktur data yang mewakili posisi (Vector2 atau Vector3) default ke nol, Anda tahu bahwa penempatan default untuk objek adalah di pusat dunia (bukan di sudut bawah).

MichaelHouse
sumber