Tôi đang làm việc trên một Roguelike, và với nó, tôi đã tạo ra một thuật toán quan sát trường theo dõi / chiếu tia (foV) bao gồm việc vẽ các đường Bresenham tới mọi điểm trong một vòng tròn rắn. Nó được tạo ra miễn phí (và hiệu quả hợp lý), nhưng nó thiếu một yêu cầu quan trọng của tôi: tính đối xứng (nếu bạn có thể nhìn thấy một con quái vật, nó cũng phải có thể nhìn thấy bạn).
Đây là một ví dụ về hành vi không đối xứng của mã của tôi. Trong ảnh bên trái, tôi đang đứng ở một góc (khối 'X' màu đỏ = tường). Tôi có thể thấy các ô bên phải trên cùng. Tuy nhiên, nếu tôi di chuyển đến một trong những ô đó (ảnh phải), tôi không còn có thể nhìn thấy ô mà tôi đến từ đó.
Tôi nghĩ rằng tôi có thể theo một dạng của Trường nhìn cho phép , nhưng chỉ vì bài viết của Roguebasin cho rằng nó được phép đối xứng. Có phương tiện thay thế để có được sự đối xứng?