Есть 2д сетка треугольников. Топология фиксирована и задана индексами.
Хочу варьировать положения вершин. Например для N вершин будет 2N параметров нормированых [0;1]. Но при этом надо как то следить чтобы вершины не заползали в соседние полигоны.
Обнаружить заползание наверно можно по знаку векторного произведения 2х векторов сторон. Но как его устранять - не понимаю пока.
Я не понял, а разве нельзя сделать для 2д сетки чтобы вершины были общие у соседних полигонов? Тогда они не смогут за ползти физически куда то...
stratego
> были общие у соседних полигонов
Конечно они есть, потому и используется список индексов (индексный буфер). Добавил рисунок
Вообще не понятно, что делаешь. Зачем тебе нормировать положение части вершин? Или ты пытаешься выстроить граф сцены или чего там еще?
stratego
Представь что координаты вершин генерируются случайным образом. Из-за этого будут случаи наползания. Нужно оставить эту случайность но устранить наползание.
Можно варьировать длины отрезков. Хотя для достаточно длинной фигуры все равно нет гарантии что она не изогнется и голова не пересечется с хвостом.
Ограничь случайность координат, чтобы выпадали в определённом диапазоне, без наползания... А вообще зачем всё это надо то? Вдруг народ подскажет более простое решение...
Получай вершины в соответствии с параметризацией, потому делай ремаппинг своих вершин(что-то в духе жадного алгоритма, найти ближайшую не использованную)
Ок, больше инфы. Есть задача где надо подобрать триангуляцию минимизирующую некоторую функцию потерь. Т.е. варьируя положения вершин ищем оптимальную сетку. Если не ставить условия на разбиение то почему то все делают триангуляцию Делоне. Т.к. это удобно, положения вершин сами задают положения треугольников. Вот только такое разбиение не всегда минимизирует конкретную задачу, а только мешает. Поэтому я пошел с другого конца: фиксируем топологию и ищем положения вершин.
P.S. правильная постановка задачи - половина решения. Вот похоже ищу.
посмотрите на это сообщение https://gamedev.ru/community/urho3d/forum/?id=274341&page=2&m=5676025#m17
если вы не ищите что то специфическое, то самая подходящая сетка вершин в разраженном состоянии является именно обыкновенная сетка. А значит всё что остаётся, это убрать её минусы как сделано по ссылке.
если же цель не в самой сетке, а в построении модели, то лучше BSP или почти он же BMesh - ничего не придумали и не будут. Он идеально справляется с задачей.
Если же вам надо деформацию, то наверное лучше посмотреть сюда https://youtu.be/IYClvszCCPA?t=100
slepov
> Т.е. варьируя положения вершин ищем оптимальную сетку.
Штрафуй тогда некорректную геометрию, че тут думать? Вот самопересечения удаленных частей могут стать проблемой, но это уже от конкретной формы зависит.
}:+()___ [Smile]
> Штрафуй тогда некорректную геометрию
Это конечно будет работать. Но ценой еще большего перебора
slepov
> триангуляцию минимизирующую некоторую функцию потерь
Что это значит? Есть "функция потерь" сетка триангуляции => число, которую надо минимизировать и про которую нет никакой доп. инфы?
Чисто набросить на вентилятор, может подтолкнёт к каким-то мыслям:
релаксация вороного не по декартову расстоянию, а по кастомной функции.
Я как-то так делал, получилось очень хорошо, но там искомыми данными было именно расположение точек на плоскости, а не сетка
meekobold
> релаксация вороного
это типа к психологу сводить Вороного? он умер, давно
slepov
хаха >_>
https://en.wikipedia.org/wiki/Lloyd%27s_algorithm