我正試圖在二維網格上實現視線算法。我知道它是如何在概念上工作的,但我想不出如何將它作爲一種算法來實現。如何找到一條線上的所有網格?
基本想法很簡單。在僞代碼:
function LineOfSight(point1, point2): boolean
squares = GetListOfSquaresOnLine(point1, point2)
for each square in squares
if square.IsOpaque then return false
return true
GetListOfSquaresOnLine
會(概念)畫從方格的在點1的中心以點2的方格的中心的直線,並返回該線穿過所有的方塊的列表。但這是我不知道如何實現的部分。有人知道怎麼做嗎? Delphi或C示例是首選,但不是必需的。
謝謝!超級套路線比基本的Bresenham套路更合適。切換到接受的響應。 – 2010-07-22 00:26:08
此圖像有正方形,但不突出顯示。爲什麼是這樣? ---編輯:我現在明白了。這裏有一個鏈接,修改算法以獲得http://eugen.dedu.free.fr/projects/bresenham/的超級覆蓋。 – byxor 2017-05-29 11:21:29