Я так понял, ТС спрашивает про алгоритм, а не про какую кнопку нажать.
Цитата EugeneEx:
Добрый день!
Может ли кто то помочь с преобразованием треугольников в четырехугольники? Сам плохо в этом разбираюсь, но нужно сделать свою функцию для этого (язык программирования не имеет значения).
Есть список полигонов вида:[[0, 1, 2], [2, 1, 3]....] и вершин [0.1, 0.2, 0.1.....]
Могу заплатить за помощь или готовое решение.
Не на том форуме вопрос.
Я так понял, вам нужен алгоритм. Если так, то советую поискать на хабре, наверняка где-то есть уже написанное решение.
Ну или давайте разберемся :)
У вас есть массив треугольников, каждый треугольник имеет вид [1, 2, 3] - массив из трех точек.
Нужно получить на выходе массив четырехугольников. Четырехугольник - это два треугольника. Соответствнно, на выходе у вас будет массив вида
[[[1,2,3][4,2,3], [3,4,5], [4,5,6]]]
или
сетка[
четырехугольник1[
треугольник1[точка1, точка2, точка3],
треугольник2[точка1, точка2, точка3]
],
четырехугольник2[
треугольник1[точка1, точка2, точка3],
треугольник2[точка1, точка2, точка3]
],
четырехугольник2[треугольник1[точка1, точка2, точка3],треугольник2[точка1, точка2, точка3]],
и т. д.
Таким образом, Вам надо найти пары треугольников, имеющие общую грань.
Для того, чтобы этого достичь, самый простой, прямой и медленный путь выглядит так:
1. Создаем пустой массив, заготовку под конечный результат.
2. Начинаем перебор всех треугольников исходного массива.
3. Для каждого треугольника перебираем все остальные треугольники исходного массива, ищем такой, с которым у текущего треугольника есть общая грань (две общих точки).
4.1. Если не нашли пару - это изолированный треугольник. Убираем его в отдельный массив изолированных треугольников.
4. Если нашли пару, тогда оба треугольника удаляем из массива, и создаем элемент массива результатов - квад, состоящий из двух найденных треугольников.
5. Ищем следующий треугольник для анализа. Для этого нужно сделать два шага:
5.1 перебираем уже найденные квады, пробуем найти к каждому их треугольнику прилегающий треугольник в исходном массиве (так же, как в пункте 3). Если поиск удался - повторяем алгоритм с шага 3 для найденного треугольника из исходного массива.
5.2 если смежный треугольник в исходном массиве не найден - берем первый оставшийся треугольник исходного массива, и повторяем для него процедуру с шага 3.
6. Повторяем процедуру до тех пор, пока в исходном массиве остаются любые треугольники.
Таким образом, на входе у нас есть исходный массив треугольников, на выходе мы получаем массив квадов, каждый из которых состоит из двух треугольников, и массив треугольников, не имеющих смежных (см. видео выше - там видно, что после квадификации осталось несколько треугольников, которые "не пригодились").
Ладно, вот вам пдф, там английский язык и уйма математики, но в разделе 3.1 - алгоритмы квадификации :)
http://www-sop.inria.fr/members/David.Bommes/publications/star_quads.pdf