vcglib中检测到的自交叉数与Meshlab数

时间:2018-06-11 12:10:46

标签: computational-geometry meshlab vcg

当我执行我的程序时

  

C:\ Users \ me \ Documents \ projectCGALII \ build \ Debug> test.exe pig.obj

我得到了6个交叉点,当它在Meshlab中被检查时它说4个交叉点。这是我的计划:

void  countSelfIntersection(const char* filename)
{
    OpenMesh(filename, pm);
    vcg::tri::UpdateTopology<PMesh>::FaceFace(pm);
    std::vector<PMesh::FaceType *> intersections;
    bool SelfIntersect = tri::Clean<PMesh>::SelfIntersections(pm, intersections);

    std::cout << "Count Intersection: " << intersections.size() << std::endl;

    for (std::vector<PMesh::FaceType *>::iterator it = intersections.begin(); it != intersections.end(); it++)
    {
        PMesh::FaceType *face = *it;
        for (int i = 0; i < 3; ++i)
        {
            std::cout << "Vertex(" <<i<<")"<< std::dec <<(int) face->cV0(i) << " " << std::dec << (int)face->cV1(i) << " " << std::dec << (int)face->cV2(i) << std::endl;
        }

        std::cout<<std::endl;


    }

}


int main(int argc, char* argv[])
{
    nonManinfoldEdge(argv[1]);
    return 0;
}

附上pig.obj文件:

https://drive.google.com/open?id=1fEqZft_OhHxTsAvio58_TWOtvrYbGCOA

是结果中重复的面孔?如何像meshlab一样得到正确的结果?哪个是打印每个面或顶点属性的更好方法,以检查是否存在重复的面?如果它们存在,如何删除重复的面孔?

1 个答案:

答案 0 :(得分:0)

解决!

pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);