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