![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2010
Адрес: Стык Нижегородской и Мордовской областей, город Саров
Сообщений: 17
|
У меня есть Vector.<Point>, составляющий фигуру. Как можно узнать, внутри ли фигуры определенная точка, не прибегая к отрисовке в Graphics для последующего вызова hitTestPoint? Довольно долго думал, мучал гугл и поисковил flahser-а.
Зачем нужно: Пишу собственный энджин для динамических теней, а чтобы во время перерисовки не производить излишние вычисления (Если не сделать эту заглушку, даже с проверкой на изменения вычисления загружают процессор слишком сильно), нужен механизм для отсеивания тех объектов, до которых свет не дотягивается. Использовать Graphics не хочу, ибо это на мой взгляд индусский способ ![]() Последний раз редактировалось krabanek; 02.05.2012 в 10:44. |
|
|||||
|
Если вы опишете характеристики возможных фигур, станет проще.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Побить на треугольники и проверять на точку в треугольнике?
Плюс, если тормозит, то проверку сперва на AABB, т.е. попадает ли точка в прямоугольник, в котором находится треугольник (и/или вся фигура). Ещё можно как для широкой фазы оптимизации ввести, но думаю они уже не понадобятся.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Стык Нижегородской и Мордовской областей, город Саров
Сообщений: 17
|
Фигуры совершенно произвольные. Хотя в данный момент в основном тестирую на треугольниках и прямоугольниках.
Цитата:
Процесс идет примерно так: 1. Весь экран заливается черным. 2. Происходит циклический вызов расчетов света для всех источников. 3. Рисуются освещенные области. 4. Рисуются тени в освещенных областях. |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Проверка на AABB - это быстрый способ откинуть не нужные (не принять нужные). Понятно, что не все ненужные откинутся и к тем, кто не откинется уже применять нормальную проверку.
Я не оч. понял, зачем нужно попадание именно точки, скорее отрезка (всё то же самое, только пересечение отрезка и треугольника и у отрезка есть свой AABB). Причем по факту нужна проверка на пересечение и "попадание в" двух фигур, возможно тут можно что-то попробовать хитрее.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Стык Нижегородской и Мордовской областей, город Саров
Сообщений: 17
|
Отрезок - это две точки, не? Плюс пересечение отрезка с фигурой найти легко, а если фигура не пересекается ни с одной из сторон и полностью лежит в зоне освещения?
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Отрезок это не две точки, в смысле, обе эти точки могут лежать вне фигуры, но пересечение будет. Нужно проверять именно ситуацию "пересечение или попадание внутрь".
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
можно предложить как самое простое и наверно, это будет быстрее чем резать на треугольники. Режьте на относительно маленькие прямоугольники. Экспериментально можно выяснить при каком размере прямоугольников артефакты будут приемлемыми.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Да, кстати, отрисовка в Graphics (а лучше наверное битмапдату, к ней много сравнительно быстрых функций прилагается) - не обязательно плохое решение. Потому как вся та математика про которую я пишу - она оч. дурная по многим параметрам.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Oct 2010
Адрес: Стык Нижегородской и Мордовской областей, город Саров
Сообщений: 17
|
Попробовал все-таки графические просчеты, решил не насиловать мозги себе и вам. Остался недоволен тем, что использовал-таки такой способ, но зато теперь все нормально. Тему можно закрыть, но если некоторым все-таки захочется попарится по поводу "пересечения или попадания внутрь" - велкам.
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:24. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| hitTestPoint , Point , чистая математика |
|
|