Хонич А.
Как самому создать трехмерную игру
стр. 168

Алгоритм функции CheckTouchLine очень прост. Втар указывает на текущую линию до тех пор, пока не встретится -1. Перед анализом очередной линии проверяется, не использовалась ли данная линия в текущем цикле (в нашем конкретном случае в функции CheckWay Run) путем сравнения if ( Counter != H->CountUseLine ). И если условие истинно, то линия не использовалась. Данная проверка осу ществляется для того, чтобы не делать одну и ту же работу несколько раз. Ведь часто возможна такая ситуация, что одна линия может принадлежать нескольким смежным блокам. В этом случае прн анализе очередного блока данная линия опять подвернется под руку.

Если линия еще не использовалась, то запускается функция анализа линии и заполнения структуры STEP В нашем случае - это функция MakeStepLine. Эта функция проверяет, пересекается ли вектор пути с текущей линией, указатель которой передается в функцию MakeStep Line. Проверка осуществляется в два

этапа:

1.    Проверяется, с какой стороны от вектора пути находятся обе вершины линии. Если обе находятся с правой стороны, или с левой то линии пересечься не могут. Это условие является достаточным. Если же вершины наход ятся по разным сторонам от вектора, то линии могут пересекаться. Эго условие является необходимым, но недостаточным. Реализация данной проверки выглядит так:

Функция CheckSideVector ofPoint возвращает 0, если координата, заданная в первых двух параметрах, находится справа от вектора, указатель на который передается третьим параметром. Если координата находится слева от вектора, то функция возвращает 1. В реализации данная функция несложна, и я надеюсь, что вы осилите ее самостоятельно.

2.    По специальной формуле вычисляется расстояние между началом вектора пути и точкой пересечения двух векторов. Тут вы можете спросить, откуда же взялся второй вектор? А второй вектор - это наша проверяемая линия.


Новости
Авторы проекта «1917» выпустили онлайн-игру об истории СССР
Разработчики рассказали о том, что пользователи их игры смогут принять участие в главных исторических событиях советского периода.
В God of War не будет сезонного пропуска
Креативный директор студии SIE Santa Monica Studio Кори Барлог заявил, что в новой части God of War не будет сезонного пропуска.