2016-12-20 14 views
0

각 셀의 x와 y 좌표 (정수)로 결정되는 격자가 있습니다. 이 그리드는 100x100입니다.하나의 점과 각도를 가진 Bresenham의 알고리즘

이 나는 ​​셀 (X0, Y0) 및

내 목표는 라인 (내점 (x0, y0)에 의해 교차 모든 셀의 좌표를 얻을 수있을 것입니다 각도 A.하는을 부여하고).

어떻게하면됩니까 ?? 문제는 내가 줄의 길이가 없다는 것입니다 ...

두 번째 지점을 찾은 다음 Bresenham의 알고리즘을 사용하려고 생각했지만 두 번째 지점은 일반적으로 찾기에 너무 길었습니다. 내 표 바깥. 따라서 Bresenham의 알고리즘 (http://www.roguebasin.com/index.php?title=Bresenham%27s_Line_Algorithm#Python)을 수정하려고 생각했지만 알고리즘이 입력에 두 점이 있다는 사실에 기반하여 알고리즘을 수행하는 방법을 알지 못했습니다! :/

도움을 주셔서 감사합니다.

+1

두 번째 점을 계산할 때'(y1 - y0)/(x1 - x0) = tan (A) '라는 사실을 이용하십시오. –

+0

"모든 셀이 선으로 교차 ... ..."각 셀이 수직 또는 수평 이웃에 연결되는 두꺼운 각진 선이 생성됩니다. Bresenham의 알고리즘은 세포가 대각선으로 결합 할 수있는 다른 얇은 선을 생성합니다. 너는 왜 원하니? –

답변

0

y 축을 따라 나가기 전에 선이 x 축을 따라 그리드를 빠져 나가는 각도라고 가정합니다. 이것은 당신이 그 라인의 끝의 x 좌표를 알고, @AxelKemper에 의해 주어진 공식을 사용하여 y 좌표를 계산할 수 있다는 것을 의미합니다. (필요하다면 위의 x & y 역할을 바꾸십시오.) 어떤 경우에 사전에 알 수 없으면 하나만 선택하고 계산을 수행하고 그리드 외부에 있으면 다른 경우를 사용하십시오.