Установка углов параметризации поверхности с помощью CGAL - PullRequest
0 голосов
/ 14 мая 2019

Я играю с примером square_border_parameterizer.cpp из CGAL-4.14. Я хотел бы не только выбрать четыре угла, но и решить, какой есть какой. То есть я хотел бы указать, какому углу будет назначена пара параметров (0,0), которая станет (0,1), которая станет (1,0), а какая станет (1,1). Возможно ли это?

Я попробовал пример Нефертити, поставляемый с CGAL, с несколькими перестановками выбранных углов.

corners1.selection.txt:

133 8 0 287

corners2.selection.txt:

8 0 287 133

углы 3.selection.txt:

287 0 8 133

Однако при открытии в Meshlab результат.off выглядит одинаково во всех трех случаях.

Я также взглянул на исходный код, но пока не мог решить, как достичь своей цели. И, насколько я могу судить, в документации упоминается только то, что можно выбрать четыре угла.

1 Ответ

1 голос
/ 15 мая 2019

То, что вы должны настроить, это граничный полжун, принятый в качестве аргумента параметризатором.

Внутренне (в частности, в функции compute_offsets () из Square_border_parameterizer) углыприписали свое геометрическое положение ультрафиолетового излучения, пройдя границу, начиная с полжедза bhd, который вы передали во входных данных: первый встреченный угол будет в uv(0,0) и т. д.

Таким образом, если вы хотите изменитькакая вершина находится в (0,0) и, глядя на squared_border_example.cpp , с которым вы играли, вы можете просто добавить:

  while(source(bhd, sm) != vda[i])
    bhd = next(bhd, sm); // walk the border

перед вызовом SMP::paramterize() с i=0,...,3, и вы получите любое вращение параметризованного пространства, которое вы можете захотеть.

...