- 14, Oct 2024
- #1
Проблема:
Получение полигональная сетка в качестве входных данных мне нужно построить поверхность, которая точно соответствует заданным входным данным. Моя задача — создать b-сплайн поверхность, которая точно выглядит как связанная полигональная сетка. Очевидно, что мой b-сплайн поверхность должна иметь степень единицу в обоих направлениях $u$ и $v$.
Выход:
Как результат моего решения. Мне нужно создать матрицу контрольные точки которые представляют эту сгенерированную поверхность.
Одним из свойств этой матрицы является то, что каждый элемент каждой строки и столбца связан друг с другом.
Если наша матрица контрольных точек представляет собой матрицу $ n \times m$, то пусть $C_i$ — столбец этой матрицы с $C_i = \langle e_{1i}, e_{2i}, \dots, e_{mi} \rangle $ то в многоугольнике должен существовать путь от $e_{1i}$ до $e_{mi}$.
Следует учитывать одну вещь: если между $e_{ji}$ и $e_{(j+1)i}$ нет ребра, мы можем построить его, если это ребро лежит внутри многоугольника.
Моя тривиальная идея:
Предполагая, что многоугольник имеет $n$ узлов. Я создаю $n$ других узлов внутри многоугольника рядом с каждым исходным узлом. Затем я создаю матрицу размером $2 \times n$. Первая строка содержит все точки, составляющие многоугольник. Вторая строка содержит соответствующий дополнительный вставленный узел. Чтобы соединить два дополнительных вставленных узла, мне нужно убедиться, что линия между двумя узлами находится внутри многоугольника.
Эта идея работает только для простой структуры, и чем сложнее полигон, тем сложнее найти эти дополнительные точки.
Может быть, есть хорошие решения?