Tôi đang cố gắng làm phẳng mảng 3D thành mảng 1D cho hệ thống "chunk" trong trò chơi của mình. Đó là một trò chơi khối 3D và về cơ bản tôi muốn hệ thống chunk gần như giống hệt với hệ thống của Minecraft (tuy nhiên, đây không phải là bản sao của Minecraft bằng bất kỳ thước đo nào). Trong các trò chơi 2D trước đây của tôi, tôi đã truy cập mảng được làm phẳng bằng thuật toán sau:Làm cách nào để "làm phẳng" hoặc "chỉ mục" mảng 3D trong mảng 1D?
Tiles[x + y * WIDTH]
Tuy nhiên, điều này rõ ràng không hoạt động với 3D vì thiếu trục Z. Tôi không có ý tưởng làm thế nào để thực hiện loại thuật toán này trong không gian 3D. Chiều rộng, chiều cao và chiều sâu là tất cả các hằng số (và chiều rộng chỉ lớn bằng chiều cao).
Chỉ là x + y*WIDTH + Z*DEPTH
? Tôi khá xấu với toán học và tôi chỉ mới bắt đầu lập trình 3D vì vậy tôi khá mất: |
PS. Lý do cho điều này là tôi đang lặp lại và nhận được các công cụ theo chỉ mục từ nó khá nhiều. Tôi biết rằng mảng 1D nhanh hơn mảng đa chiều (vì lý do tôi không thể nhớ: P). Mặc dù điều này có thể không cần thiết, tôi muốn có hiệu suất tốt nhất có thể :)
tôi thích hợp trong nói rằng bạn muốn có một mảng 3D để được phù hợp với một arr 1D ay? – DMan
Tại sao bạn không sử dụng mảng 3D? – svick
@DMan Vâng bạn là :) Tôi luôn luôn giải thích tất cả mọi thứ theo cách khó khăn nhất và dài nhất để không có bất ngờ bạn không hiểu: P – flai