У меня есть путь, состоящий из списка 2D-точек. Я хочу превратить их в полосу треугольников, чтобы визуализировать текстурированную линию заданной толщины (и другие подобные вещи). Таким образом, по сути, список 2D-точек должен стать списком вершин, определяющих контур многоугольника, который при рендеринге будет отображать линию. Проблема заключается в обработке угловых соединений, скосов, заглушек и т. д. Результирующий многоугольник должен быть идеальным в смысле отсутствия перерисовки, чистых соединений и т. д., чтобы его можно было выдавливать или как-то иначе играть с ним.
Существуют ли какие-либо простые ресурсы, которые могут предоставить понимание алгоритма, код или любую другую информацию о том, как сделать это эффективно?
Я абсолютно НЕ хочу иметь полноценную 2D-векторную библиотеку (cairo, antigrain, OpenVG и т. д.) с кривыми, дугами, штрихами и всеми прибамбасами. Я копался в нескольких деревьях исходных текстов для реализаций OpenVG и других вещей, чтобы найти некоторое представление, но все это ужасно запутано.
Я определенно готов закодировать это сам, но есть много вырожденных случаев (маленькие сегменты + толстые ширины + острые углы), которые создают всевозможные проблемы с соединением. Даже небольшая помощь сэкономила бы мне часы попыток справиться с ними всеми.
РЕДАКТИРОВАТЬ: Вот пример одного из тех вырожденных случаев, который вызывает уродство, если вы просто переходите от вершины к вершине. Красный — исходный путь. Оранжевые блоки представляют собой прямоугольники заданной ширины, выровненные по центру каждого сегмента.