我正在使用CGAL-4.14中的square_border_parameterizer.cpp示例。我不仅要选择四个角落,还要决定哪个。也就是说,我想指定哪个角将被分配参数对(0,0),哪个将变成(0,1),哪个将变成(1,0),哪个将变成(1,1)。有可能吗?
我尝试了随CGAL一起提供的Nefertiti示例,其中包含选定角的多个排列。
corners1.selection.txt:
133 8 0 287
corners2.selection.txt:
8 0 287 133
corners 3.selection.txt:
287 0 8 133
但是,在Meshlab中打开的所有三种情况下,result.off似乎都相同。
我也看了一下源代码,但是我还不能断定如何实现我的目标。据我所知,文档仅提到一个人可以选择四个角。
答案 0 :(得分:0)
您应该调整的是参数化程序在参数中采用的边界半边。
在内部(特别是在Square_border_parameterizer
的函数compute_offsets()中),通过从您经过的半边线bhd
开始,通过沿边界移动拐角,将角的几何uv位置赋予其角在输入中:第一个遇到的角将在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
之前,您将获得所需旋转的参数化空间。