Показать сообщение отдельно
Старый 16.02.2010, 15:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 22  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445

Psycho Tiger, читай внимательней))) Мой ответ был как раз на "шаг в пиксель". Предлагал же я вот что. За четыре "шага" мы сокращаем область поиска в 16 раз.
1. Известно, что линия пересекает фигуру, но ее половина - нет. Остается вторая половина для поиска.
2. Новая линия пересекла фигуру - есть точка без пересечения (середина всей линии) и точка с пересечением - 75% всей линии
3. Сокращаем область еще в два раза. Пересечение есть.
4. Сокращаем область еще в два раза. Пересечения нет.
Продолжаем в том же духе. 10 "шагов" и у нас останется пять точек для точечной проверки. Не надо идти по каждому пикселю линии!

UPD: к сожалению все это только красивая теория. Флэш не сравнивает реальные шейпы, только шейп и точку или bounds шейпов. В реальности даже уменьшая bounds контрольной линии мы рискуем никогда не найти пересечение, так как... его вообще может не быть, хотя hitTestObject и уверяет что есть.
Битмапдата пожалуй на сегодняшний день единственный вариант.
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 16.02.2010 в 22:25.