Dünya Sınırları - (0, Boyut) veya (-HalfSize, HalfSize)?


9

Nesneleri hareket ettirmek, çizmek ve çarpışmak için bir oyun alanı oluştururken, (0,0) noktasının veya (0,0,0) noktasının alanınızın tam ortasında olması daha iyidir, öyle ki dünyaların sınırları (-halfSize, halfSize) veya uzayınızın uzak köşesinde olması daha mı iyi, yani sınırlar (0, boyut) mu?

Her birinin artıları ve eksileri nelerdir ve her biri ne tür problemleri beraberinde getirir? Yoksa gerçekten önemli değil mi?

Küçük bir ayrıntı gibi görünüyor, ama belki de göz ardı edebileceğim büyük sorunlar olup olmadığını görmek istedim.

Yanıtlar:


15

Bana öyle geliyor ki alanınızın merkezi (0, 0, 0) olması daha iyi. Eğer için harikalar yapabilirsiniz uzayda pozisyonlarını temsil etmek imzalı biçimi, sen negatif ve formatının olumlu kısımlarını her ikisini de kullanmak verir (0, 0, 0) bir merkezi, kullandığınız varsayarak hassas yüzen için ve aralık imzalı tamsayılar için . Bu küçük ölçekler için önemli olmayabilir, ancak büyük ölçekler için tüm farkı yaratabilir, yani tamamen yeni bir sistem bulmadan önce.

Sadece netleştirmek için: Oluşturduğunuzu farz ettiğim bir oyun dünyası yarattığınız düşünüldüğünde, dönüştüreceğiniz nihai format, bildiğiniz gibi imzalı bir format olacak. Bu durumda, (0, Boyut) 'un temsil edilemediği bir duruma, (-HalfSize, HalfSize)' nin gösterilebileceği bir duruma gelebilirsiniz. Oluşturmayı planlamıyorsanız ve rastgele bir format seçebiliyorsanız, her iki stili de kullanabilirsiniz, ancak yine de kişisel olarak yukarıda bahsedilen stili tercih ederim.


+1, birçok fizik simülasyonu bu aralığı da kullanır, muhtemelen bu nedenle.
MichaelHouse

1
Faydalı referanslar: altdevblogaday.com/2012/02/22/...
Leander

1
Ayrıca oldukça iyi bilinen ama muhtemelen girişimsiz olanlar için biraz zor: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Her Bilgisayar Bilimcisi Kayan Nokta Aritmetiği Hakkında Bilmesi Gerekenler"
leander

5

Özellikle önemli değil. Oyun boyunca tutarlı olduğunuz sürece.

Daha yaygın olan yaklaşımın dünya sınırlarının ortalanması olduğuna inanıyorum (0,0), yani sınırlarınızı zorlayacaksınız -halfSize, halfSize. Konumu (Vector2 veya Vector3) temsil eden çoğu veri yapısı varsayılan olarak sıfırlar olduğundan, nesneler için varsayılan yerleşimin dünyanın ortasında olduğunu (alt köşede değil) bilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.