Алгоритм слияния контуров
Возникла необходимость реализовать мультик элементами которого являются замкнутые линии (контуры каких то объектов). Эти контуры движутся друг относительно друга и когда сталкиваются должны плавно сливаться. Примерно так это должно выглядеть при раскадровке:
В какую сторону копать, для реализации такого поведения?
Свои соображения сводятся к тому, чтобы реализовать дерево, корнем которого будет вся сцена в целом. Листья дерева - координаты и формы отдельных элементарных контуров. При слиянии будет удаляться некий узел, а лист которому он принадлежал будет добавляться к листу большего контура (или будут удалены оба узла и создан новый с листом состоящим из предыдущих). То-есть вот этот алгоритм вызывает трудности.
- Вопрос об архитектуре программы (классы, паттерны) или о способах отрисовки? от sadovoya, 19 октября 2013 года
Все контуры я хотел бы реализовать как полигоны с числом узлов достаточным для обеспечения плавности изгибов.
Язык C++.
То-есть в Qt и в OpenGL есть поддержка операций над контурами?
А такие есть?
CassandraDied, в .Net такого случаем нет?
A painter path is an object composed of a number of graphical building blocks (such as rectangles, ellipses, lines, and curves), and can be used for filling, outlining, and clipping. The main advantage of painter paths over normal drawing operations is that complex shapes only need to be created once, but they can be drawn many times using only calls to QPainter::drawPath().
Я бы выбрал Qt.
Надо будет разобраться, спасибо.
Не знаю. Как-то никогда не приходило в голову работать с графикой через .NET. :)
Я бы вообще такую задачу над примитивами решал с помощью ООП, не используюя средств QT, GLUT, GDI и прочих подобных плюшек, потому что очевидна возможность появления какой-то нестандартной ситуации, которую не удастся решить существующими заготовками, придётся всё равно писать руками алгоритмы, работающие с массивом если не точек, то векторов.
Хороший вариант — работа с движком. Таким, как, например, unity или cryengine, или unrealengine. Для них гораздо больше вероятность, что такие плюшки уже реализованы.
Спасибо, но все-таки не булево. Для наглядности приведу пример. Видели наверно капельки масла на поверхности горячего супа. Если под капельками подразумевать, только, их контур, то должна происходить трансформация этих кривых при слипании и разделении. И эта трансформация не ограничивается булевыми операциями.
Конечно это слишком упрощенный взгляд на вещи, реальная физическая картина гораздо сложней. Все зависит от того, какая степень достоверности требуется при моделировании.