关闭

基于CGAL高效生成TIN网

标签: CGALTINC++
314人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2200次
    • 积分:80
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论