![]() |
Коллижн луча и окружности
Все о наиболее популярных коллиженах есть здесь http://www.geometrictools.com/LibMat...ersection.html там на С++ но нужно практически только математика, она думаю будет понятна :) Луч - Круг смотрим это: Wm5IntrLine2Circle2.cpp |
Korchy, спасибо, но там только код без теории. С haxe-ом wvxvw я разобрался, но в С++ я ничего не понимаю :)
|
Вложений: 1
Цитата:
Код AS3:
Вложение 28012 |
Задача сводится к:
1) пересечению отрезков, это, я думаю очевидно 2) Оптимизации перебора отрезков В качестве оптимизации можно разбить видимое пространство на квадраты. К каждому квадрату приписывать массив объектов, содержащихся в них. Луч (который вообще-то можно сделать отрезком) в любом случае будет пересекать лишь часть квадратов. То есть берем квадраты, получаем общий список объектов на этих квадратах и эти объекты проверяем на пересечение с "лазером". Проверить пересечение отрезком можно так: - проверить на пересечение прямоугольники, описывающие отрезки - проверить что обе точки одного отрезка находятся по разные стороны другого отрезка |
Цитата:
Если мишеней не много (не много, это порядка сотни), то писать алгоритмы сортировки и разбиения на кластеры, построение деревьев и т.п. - я думаю, себя не оправдает. Но если бы это была карта звездного неба в натуральную величину ;) то наверное имело бы смысл например, проверять на попадание постепенно, сдвигая границу, по которой проверять горизонтально или вертикально. Как только зафиксировано попадение - можно быть уверенным, что оно ближе всего к стреляющему. Но для этого во время движения все мишени нужно было бы пересортировывать так. И тут нужно смотреть что чаще меняется, и избегать его менять :) Цитата:
|
Цитата:
|
| Часовой пояс GMT +4, время: 02:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.