繁体   English   中英

从 CGAL 3D 网格生成获取顶点坐标 -6.27744e+66:mesh_implicit_sphere 示例

[英]Getting -6.27744e+66 for vertex coordinate from CGAL 3D Mesh Generation: mesh_implicit_sphere example

我正在从标题中提到的示例代码中从生成的网格中提取方面数据:

 vector<CGAL::Mesh_complex_3_in_triangulation_3<Tr>::Facet_iterator> Facets;
    for (CGAL::Mesh_complex_3_in_triangulation_3<Tr>::Facet_iterator it = c3t3.facets_begin(); it!=c3t3.facets_end() ; it++)
    {
        Facets.push_back(it);
    }

现在尝试显示一些顶点坐标,如下所示:

CGAL::Mesh_complex_3_in_triangulation_3<Tr>::Facet_iterator fct = Facets[0];
cout << "Vertex 0 has coordinate: \n";
    cout << fct->first->vertex(0)->point().x() << ", " 
        << fct->first->vertex(0)->point().y() << ", "
        << fct->first->vertex(0)->point().z() << endl<<endl; 

    cout<< "Vertex 1 has coordinate: \n";
    cout << fct->first->vertex(1)->point().x() << ", "
        << fct->first->vertex(1)->point().y() << ", "
        << fct->first->vertex(1)->point().z() << endl<<endl;

    cout << "Vertex 2 has coordinate: \n";
    cout << fct->first->vertex(2)->point().x() << ", "
        << fct->first->vertex(2)->point().y() << ", "
        << fct->first->vertex(2)->point().z() << endl<<endl;

    cout << "Vertex 3 has coordinate: \n";
    cout << fct->first->vertex(3)->point().x() << ", "
        << fct->first->vertex(3)->point().y() << ", "
        << fct->first->vertex(3)->point().z() << endl<<endl<<endl;

(假设我正确理解了数据结构) fct指向包含(c,i)的 std::pair,这意味着:单元格 c 中 fct 表示的小平面和索引 i 的顶点都属于单元格 c,它们满足: fct 与顶点 i 相对。 所以我的代码应该显示单元格 fct->first 的顶点坐标(它是一个四面体,因此有四个顶点)。

这是我的问题

上述代码的output为:

顶点 0 具有坐标: 0.282254,-0.638274,-0.716464

顶点 1 的坐标:0.408885,-0.669831,-0.621398

顶点 2 的坐标:0.24175,-0.741988,-0.625771

顶点 3 有坐标:-6.27744e+66, -6.27744e+66, -6.27744e+66

Vertex3的坐标显然不对,我搜索了这个问题发现-6.27744e+66通常来自喜欢访问未初始化向量的东西。 但即使是这种情况,我应该怎么做才能得到正确的值? 或者,谁能告诉我到底哪里出了问题?

顶点 3 很可能是无限顶点。 在 CGAL 中,三角剖分使用一个额外的无限顶点表示,该顶点连接到凸包上的所有点。 您可以使用 function is_infinite()来检查。

正如 Alex 所指出的,您应该使用Cell_in_complex_iterator来访问网格域的所有有限单元。

编辑:来自 sloriot 的上述帖子是正确的:这是复合体外部的一个单元格,它连接到无限顶点。

请参阅此处的迭代器部分和此处的复杂遍历部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM