ขอบเขตโลก - (0, ขนาด) หรือ (-HalfSize, HalfSize)?


9

เมื่อสร้างพื้นที่เกมที่จะย้ายวาดและชนวัตถุมันจะดีกว่าถ้ามีจุด (0,0) หรือจุด (0,0,0) อยู่ในใจกลางของพื้นที่ของคุณเช่นนั้น ขอบเขตของโลกคือ (ครึ่งขนาดครึ่งขนาด) หรือจะเป็นการดีกว่าถ้าอยู่ที่มุมไกลของอวกาศดังนั้นขอบเขตจึงเป็น (0 ขนาด)?

ข้อดีและข้อเสียของแต่ละข้อคืออะไรและแต่ละประเภทมีปัญหาอะไรบ้าง หรือว่ามันไม่สำคัญจริงๆ

ดูเหมือนว่ารายละเอียดเล็ก ๆ น้อย ๆ แต่ฉันต้องการที่จะดูว่าอาจมีปัญหาสำคัญที่ฉันอาจจะมองเห็น

คำตอบ:


15

สำหรับฉันแล้วการมีจุดศูนย์กลางอวกาศของคุณนั้นดีกว่า (0, 0, 0) สมมติว่าคุณกำลังใช้รูปแบบการลงนามเพื่อเป็นตัวแทนของตำแหน่งในพื้นที่ศูนย์กลางของการ (0, 0, 0) ช่วยให้คุณสามารถใช้งานได้ทั้งในเชิงลบและชิ้นส่วนในเชิงบวกของรูปแบบของคุณซึ่งสามารถทำสิ่งมหัศจรรย์สำหรับความแม่นยำลอยและช่วงสำหรับจำนวนเต็มลงนาม . สิ่งนี้อาจไม่สำคัญสำหรับเครื่องชั่งขนาดเล็ก แต่สำหรับเครื่องชั่งขนาดใหญ่มันสามารถสร้างความแตกต่างได้ทั้งหมดนั่นคือก่อนที่คุณจะต้องสร้างระบบใหม่ทั้งหมด

เพื่อชี้แจง:เนื่องจากคุณกำลังสร้างโลกของเกมซึ่งฉันคิดว่าคุณกำลังแสดงผลรูปแบบที่ดีที่สุดที่คุณจะแปลงให้เป็นแบบลอยตัวซึ่งเป็นที่คุณรู้ว่าเป็นรูปแบบที่ได้รับการเซ็นชื่อ ในกรณีดังกล่าวคุณอาจเข้าสู่สถานการณ์ที่ไม่สามารถแสดง (0, Size) ได้ในขณะที่ (-HalfSize, HalfSize) สามารถเป็นได้ หากคุณไม่ได้วางแผนที่จะเรนเดอร์และสามารถเลือกรูปแบบตามอำเภอใจแล้วใช้สไตล์ใดสไตล์หนึ่งแม้ว่าฉันจะยังคงชอบสไตล์ดังกล่าวข้างต้น


+1 การจำลองทางฟิสิกส์จำนวนมากใช้ช่วงนี้เช่นกันน่าจะด้วยเหตุผลนี้
MichaelHouse

1
การอ้างอิงที่มีประโยชน์: altdevblogaday.com/2012/02/22/…
leander

1
เป็นที่รู้จักกันค่อนข้างดี แต่อาจเป็นเรื่องยากสำหรับผู้เริ่มต้น: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "สิ่งที่นักวิทยาศาสตร์คอมพิวเตอร์ทุกคนควรรู้เกี่ยวกับเลข
ทศนิยม

5

ไม่เป็นไร ตราบใดที่คุณสอดคล้องตลอดทั้งเกม

ผมเชื่อว่าวิธีการร่วมกันมากขึ้นคือการมีขอบเขตโลกแน่นิ่งซึ่งหมายความว่าคุณจะมีขอบเขตของคุณไปจาก(0,0) -halfSize, halfSizeเนื่องจากโครงสร้างข้อมูลส่วนใหญ่ที่แสดงตำแหน่ง (Vector2 หรือ Vector3) เป็นค่าเริ่มต้นเป็นศูนย์คุณจึงรู้ว่าการวางตำแหน่งเริ่มต้นสำหรับวัตถุอยู่ในใจกลางของโลก (แทนที่จะอยู่ที่มุมล่าง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.