Giới hạn thế giới - (0, Kích thước) hoặc (-HalfSize, HalfSize)?


9

Khi tạo một không gian trò chơi để di chuyển, vẽ và va chạm các đối tượng, tốt hơn là nên có điểm (0,0) hoặc điểm (0,0,0), nằm ở chính giữa không gian của bạn, sao cho giới hạn của các thế giới là (-halfSize, HalfSize), hoặc tốt hơn là đặt nó ở góc xa của không gian của bạn, vì vậy giới hạn là (0, kích thước)?

Những ưu và nhược điểm của mỗi loại, và mỗi loại vấn đề gì chúng đòi hỏi? Hay nó thực sự không quan trọng?

Nó có vẻ như là một chi tiết nhỏ, nhưng tôi muốn xem có lẽ có những vấn đề lớn mà tôi có thể đang xem xét.

Câu trả lời:


15

Dường như với tôi rằng có trung tâm không gian của bạn là (0, 0, 0) là tốt hơn. Giả sử bạn đang sử dụng định dạng đã ký để thể hiện các vị trí trong không gian, trung tâm (0, 0, 0) cho phép bạn sử dụng cả phần âm và phần dương trong định dạng của mình, điều này có thể làm nên điều kỳ diệu cho độ chính xác cho số float và phạm vi cho số nguyên đã ký . Điều này có thể không quan trọng đối với quy mô nhỏ, nhưng đối với quy mô lớn, nó có thể tạo ra sự khác biệt, đó là, trước khi bạn phải đưa ra một hệ thống hoàn toàn mới.

Chỉ cần làm rõ: Cho rằng bạn đang tạo một thế giới trò chơi, mà tôi cho rằng bạn đang kết xuất, định dạng cuối cùng bạn sẽ chuyển đổi sẽ nổi, giống như bạn biết, một định dạng đã ký. Trong trường hợp đó, bạn có thể gặp tình huống (0, Kích thước) không thể được biểu diễn, trong khi (-HalfSize, HalfSize) có thể. Nếu bạn không có kế hoạch kết xuất và có thể chọn một định dạng tùy ý thì hãy sử dụng một trong hai kiểu, mặc dù cá nhân tôi vẫn thích kiểu đã nói ở trên.


+1, rất nhiều mô phỏng vật lý cũng sử dụng phạm vi này, rất có thể vì lý do này.
MichaelHouse

1
Tài liệu tham khảo hữu ích: altdevblogaday.com/2012/02/22/...
leander

1
Cũng khá nổi tiếng nhưng có thể là một chút khó khăn cho người lãnh đạo: docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html - "Tất cả những gì máy tính khoa học nên biết về Floating-Point Arithmetic"
leander

5

Nó không đặc biệt quan trọng. Miễn là bạn nhất quán trong suốt trò chơi của bạn.

Tôi tin rằng cách tiếp cận phổ biến hơn là đặt giới hạn thế giới tập trung xung quanh (0,0), nghĩa là bạn sẽ có giới hạn của mình -halfSize, halfSize. Vì hầu hết các cấu trúc dữ liệu đại diện cho vị trí (Vector2 hoặc Vector3) mặc định là số không, bạn biết rằng vị trí mặc định cho các đối tượng nằm ở trung tâm của thế giới (thay vì ở góc dưới cùng).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.