그래서 저는 여러분의 세포가 사각형이라고 상상했습니다 ... 단위 사각형이라고합시다. 그래서, 어떤 좌표가 있다면, 어떤 점에 대해서, 어떤 수레 또는 복식인지, 그들은 셀 안에 있습니다.
- 당신이하는 세포가 바로 하나의 엔드 포인트에서 다른 및 각 셀에 대한 행
- 거리의 엔드 포인트가 알아야 테스트는 거짓 벽이나하지
- 반환의 경우 때 벽 그렇지 않으면 true입니다.
하나의 엔드 포인트에서 다른 도보하려면, 셀의 수, 즉, (우리는 여기에 세포를 얘기하고 있기 때문에, 그 값이 'INT'입니다 전화 delta_x 및 delta_y) 각 축의 델타를 계산하기 위해 필요 그것은 수직과 수평으로 나아 간다. 당신은이 중 가장 큰 것을 택합니다. 루프에 가장 큰 값을 사용합니다. 이 값은 D = max (delta_x, delta_y)이고 XX와 YY는 한 끝점의 셀 좌표입니다.
float step = 1.0f/D;
float current_location = 0.0;
for (int i = 0; i <= D; ++i, current_location += step)
{
int cur_x = XX + current_location * delta_x;
int cur_y = YY + current_location * delta_y;
if (intersect_wall(cur_x, cur_y))
return false;
}
return true;
그건 ...이 기능을 사용자의 기능에 맞게 조정하십시오.
이 선은 셀 중심점 만 끝점을 갖습니까? –
센터 만. 어쩌면 미래에 나는 그것으로 sth을 할 것이지만 지금은 단지 센터 일 뿐이다. –
-1에 대한 이유가 무엇입니까? ;/ –