2 차원 격자에 가시선 (line-of-sight) 알고리즘을 구현하려고합니다. 개념적으로 어떻게 작동해야하는지 알고 있지만 알고리즘으로 구현하는 방법을 생각할 수는 없습니다.줄의 모든 격자 사각형을 찾는 방법은 무엇입니까?
기본 아이디어는 매우 간단합니다. 의사 코드 :
function LineOfSight(point1, point2): boolean
squares = GetListOfSquaresOnLine(point1, point2)
for each square in squares
if square.IsOpaque then return false
return true
GetListOfSquaresOnLine
(개념) POINT2에서 그리드 광장의 중심에 POINT1에서 그리드 광장의 중심에서 직선을 그리고이 선이 통과하는 모든 사각형의 목록을 반환 . 그러나 이것이 구현 방법을 모르는 부분입니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까? 델파이 또는 C 예제가 선호 되나 필수는 아닙니다.
감사! 슈퍼 커버 라인은 기본 Bresenham 라인보다 적합합니다. 이 응답을 허용 된 응답으로 전환합니다. –
이 이미지에는 줄에 사각형이 있지만 강조 표시되어 있지 않습니다. 왜 이런거야? --- 편집 : 이제 이해합니다. 다음은 수퍼 커버 http://eugen.dedu.free.fr/projects/bresenham/을 얻기 위해 알고리즘을 수정하는 링크입니다. – byxor