Sto cercando di implementare un algoritmo line-of-sight su una griglia a 2 dimensioni. So come deve funzionare concettualmente, ma non riesco a pensare a come implementarlo come un algoritmo.Come trovare tutti i quadrati della griglia su una linea?
L'idea di base è piuttosto semplice. In pseudocodice:
function LineOfSight(point1, point2): boolean
squares = GetListOfSquaresOnLine(point1, point2)
for each square in squares
if square.IsOpaque then return false
return true
GetListOfSquaresOnLine
sarebbe (concettualmente) disegnare una linea retta dal centro del quadrato della griglia al point1 al centro della piazza griglia a point2, e restituire un elenco di tutti i quadrati che questa linea attraversa . Ma questa è la parte che non ho idea di come implementare. Qualcuno sa come fare questo? Esempi di Delphi o C preferiti, ma non richiesti.
Grazie! La linea supercover è più adatta rispetto alla linea base Bresenham. Passare questo alla risposta accettata. –
Questa immagine ha quadrati che sono _are_ sulla linea, ma non sono evidenziati. Perchè è questo? --- Modifica: capisco ora. Ecco un link che modifica l'algoritmo per ottenere il supercover http://eugen.dedu.free.fr/projects/bresenham/. – byxor