Я пытаюсь реализовать алгоритм прямой видимости на двумерной сетке. Я знаю, как это должно работать концептуально, но я не могу думать о том, как реализовать это как алгоритм.
Основная идея довольно проста. В псевдокоде:
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 предпочтительны, но не обязательны.