zoukankan      html  css  js  c++  java
  • Delaunay三角剖分算法

    在图像处理中,经常会使用到三角剖分算法;

    具体定义及其算法可以参考:http://baike.so.com/doc/5447649.html

    下面放出来代码:

    Delaunay接口为存C;

    测试是使用QT;

    下面仅仅贴出调用方法,其他的代码见文件

    	if( num_points >= 3 )//三角形必须大于3个
    	{
    		int *faces = NULL;//接受生成三角形的点
    		int offset = 0;//用于去除每个三角形的点
    		int num_faces = delaunay2d((float*)points, num_points, &faces);//输入一堆不相同的点,输出三角形的点 返回三角形个数+1 这个1代表凸点的多边形
    
    		char str[512];
    		sprintf(str, "number of convex hull vertices: %d", faces[0]);//凸点个数
    		QPointF	pf[16];
    
            //过滤掉外围的凸点
            offset += (1+faces[0]);
            
            for( i = 1; i < num_faces; i++ )
    		{
    			int num_verts = faces[offset];
    			offset++;
    //每个三角形都有三个点构成
    			for( int j = 0; j < num_verts; j++ )
    			{
    				int p0 = faces[offset + j];
                    pf[j] = QPointF(points[p0].x, points[p0].y);
    			}
    
    			painter.setBrush(QBrush(QColor(rand() % 256, rand() % 256, rand() % 256)));
                painter.drawPolygon(pf, num_verts);
    			offset += num_verts;
    		}
    		free(faces);
    
    		painter.setBrush(Qt::NoBrush);
    		painter.drawText(rect(), Qt::AlignCenter, str);
    	}
    

      源代码为:delaunay

  • 相关阅读:
    CocoaPods
    第一篇 理论 1.7 精进-正念-正知,如理作意和觉察力
    构架稳定与可扩展的优惠券系统
    一个产品从0到1的过程
    实现实时定位
    征信比拼重点是数据和连接
    黑产
    爬虫有什么用
    爬虫应用
    甘蔗理论
  • 原文地址:https://www.cnblogs.com/lanye/p/3489154.html
Copyright © 2011-2022 走看看