2011-05-13 28 views
8

Tôi hiện đang làm việc với dự án bản đồ địa hình 2d được lưu vào mảng một chiều. Mỗi khối trong bản đồ được lập chỉ mục theo tọa độ xy. Vì vậy, để lưu bản đồ vào mảng một chiều, tôi đã sử dụng phương thức thứ tự hàng lớn (http://en.wikipedia.org/wiki/Row-major_order) để chuyển đổi toạ độ xy thành một giá trị chỉ mục duy nhất (Cho phép tôi đặt khối vào một mảng).Chỉ số đơn đặt hàng chính

Bây giờ, sự cố của tôi là làm cách nào để chuyển đổi lại? Tôi có một số duy nhất mà tôi phải chuyển đổi trở lại thành tọa độ xy. Mọi trợ giúp sẽ được đánh giá cao. ^^

Trả lời

9

Để tính toán chỉ số bạn nên sử dụng một cái gì đó như thế này:

index = X + Y * Width; 

Vì vậy, để đảo ngược này, bạn có thể tận dụng cắt ngắn phân chia số nguyên để có được Y, và sau đó X chỉ là những gì còn lại sau khi những gì Y "đã sử dụng hết":

Y = (int)(index/Width) 
X = index - (Y * Width) 
+0

Điều đó dường như không hoạt động. Ví dụ (0, 4) cho 20 và khi đảo ngược, 20 cho trở lại (16, 4) – BizarreCake

+0

Anh ấy có ý tưởng đúng, tôi nghĩ anh ta vừa tạo ra lỗi đánh máy. X = index - (y * width); Vì vậy, X là những gì còn lại sau khi bạn loại bỏ các hàng được sử dụng bởi Y. – TurqMage

+0

Rất tiếc, đây là những gì đến từ việc trả lời câu hỏi khi bạn vừa mới ra khỏi giường! Cảm ơn vì đã sửa tôi. – Martin

Các vấn đề liên quan