Показать сообщение отдельно
Старый 14.06.2011, 13:31
semenyakinVS вне форума Посмотреть профиль Отправить личное сообщение для semenyakinVS Найти все сообщения от semenyakinVS
  № 10  
Ответить с цитированием
semenyakinVS

Регистрация: Mar 2010
Сообщений: 137
Цитата:
Сообщение от -De- Посмотреть сообщение
Про пересечение отрезков, рекомендую: http://users.livejournal.com/_winnie/152327.html
С++ код, но должен быть понятен. out_intersection - точка пересечения, если что.
Наглый спойлер: описано, почему не стоит параметризовать!
Интересная статья. Метод с перпендикуляром красивый.

Одно плохо - автор на умножения в функции не скупился. 16 штук (вместе с делением) - это много. А именно они в основном хавают ресурсы при поиске пересечений.

RaVeN-Nikma

Для определения стороны, в которую попадает отрезок, можно во-первых глянуть направление отрезка (если двигаться от лежащей в квадрате точки) и сразу отсечь половину сторон, с которыми вероятно пересечение (например, если движение будет в положительном направлении по координатам X и Y, то пересечение может быть только со сторонами С и В).

На втором шаге можно глянуть выше или ниже угловая точка (между найденными двумя сторонами) отрезка и найти точно сторону, с которой будем искать пересечение (через векторное произведение). Дальше искать пересечение с конкретной стороной по выбранному вами алгоритму.

Это всё катит, ясное дело, только для ориентированного по осям квадрата.


Последний раз редактировалось semenyakinVS; 14.06.2011 в 13:32. Причина: сделал текст немного понятнее