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

  • 相关阅读:
    41、XAML text editing
    使用JavaScript和DOM动态创建和修改表格(转)
    ThinkPHP入门
    PHP字符串
    sicily 6773. 用指针交换两个矩阵
    sicily 6572. partial sum
    sicily 1934. 移动小球
    sicily 1323. Switch text
    sicily 6766. tmp
    sicily 1293. 3n+1数链问题
  • 原文地址:https://www.cnblogs.com/lanye/p/3489154.html
Copyright © 2011-2022 走看看