Вот графическое представление проблемы: http://i.imgur.com/aBG3p.jpg
Учитывая начальную точку (x1, y1) и точку назначения (x2, y2), я должен определить, есть ли путь между двумя точкамиоткрыт или, если он не открыт, координата, по которой происходит столкновение.
Это была бы тривиальная проблема, за исключением специальных правил :
Линия может пересекать точку, вызывать ее (i, j) в небольшой и различной степени, не вызывая столкновения.Если (i, j) непосредственно примыкает к (x1, y1), мы можем безопасно обрезать около 0,4 по его углам, не вызывая столкновения.Однако мы не можем сократить 0,4, если идти прямо через него, только по углам.Это число сужается примерно до 0,2, когда мы отдаляемся от (x, y).К сожалению, я просто пытаюсь восстановить то, что видел однажды, поэтому я не знаю точных значений, я просто аппроксимирую их.
Предостережение к 1: если пробелНепосредственно рядом с (i, j), в плоскости, которую мы пересекаем, на той стороне, которую мы пересекаем, также занята, произойдет столкновение, несмотря ни на что.Столкновение произойдет (i, j), если мы перехватим его слишком сильно, в противном случае в соответствующей соседней плитке.
Я сделал несколько попыток решить эту проблему, всегда заканчивая тем, чтос ложными негативами и / или столкновением, возникшим в результате неправильной плитки.Я попытался сделать это без учета угла, просто посмотрев на десятичные точки x и y, пока мы движемся по линии.Я не уверен, возможно ли это сделать, или я должен каким-то образом использовать угол, или если использование угла каким-то образом может облегчить мою жизнь.
Пожалуйста, помогите, если можете!