Delaunay三角剖分算法

本文介绍了一种图像处理中常用的Delaunay三角剖分算法,并提供了具体的C语言实现代码示例。该算法能将一组点集划分为一系列三角形,常应用于图像处理和计算机图形学。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

具体定义及其算法可以参考: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

转载于:https://www.cnblogs.com/lanye/p/3489154.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值