基于CGAL高效生成TIN网

来源:互联网 发布:横道世之介 知乎 编辑:程序博客网 时间:2024/05/19 13:21

CGAL生成TIN网效率很高
参考文档:
http://doc.cgal.org/latest/Triangulation_2/index.html#Chapter_2D_Triangulations

处理核心代码如下:

#include <iostream>using namespace std;#include <fstream>#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>#include <CGAL/Delaunay_triangulation_2.h>typedef CGAL::Exact_predicates_inexact_constructions_kernel K;typedef CGAL::Delaunay_triangulation_2<K>   Triangulation;typedef Triangulation::Point                Point;int main() {    //测试数据    std::ifstream in("triangulation_prog1.cin");    //读入测试数据    std::istream_iterator<Point> begin(in);    std::istream_iterator<Point> end;    //通过文件添加    Triangulation t;    t.insert(begin, end);   //这里已经形成了TIN网    //直接添加    Triangulation::Point pt(10, 6);    t.push_back(pt);    //输出点的数目    cout<<"t size = "<<t.number_of_vertices()<<endl;    //获取每个face(TIN)    //输出面的数目    cout<<"face count = "<<t.number_of_faces()<<endl;    Triangulation::Face_iterator fi = t.faces_begin();  //三角形迭代器    int nFaceCount = 0;    for (fi = t.faces_begin(); fi!=t.faces_end(); fi++)    {        nFaceCount++;        cout<<"tri id "<<nFaceCount<<" = \t";        //输出三角形的每个顶点        for (int i=0; i<=2; i++)        {            cout<<fi->vertex(i)->point()<<"; ";        }        cout<<endl;    }    return 0;}

输入数据 triangulation_prog1.cin :
输入测试数据

输出结果:
输出结果

4w5个珠海市POIs形成的TIN网 (运算时间:1分钟):
珠海市POIs-TIN

0 0
原创粉丝点击