opengl 学习小结 (二)——简单三角剖分

本文主要介绍了在OpenGL中进行简单三角剖分的过程,包括判断线段相交、点在三角形内、顶点凹凸性的方法,并概述了算法流程,特别是如何将多边形拆分为互不重叠的三角形。

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

  前一阵子一直在忙qt3d的一个项目,主要是被三角剖分的部分给难住。需要从一张图片中提取封闭轮廓,然后在qt3d中将这些轮廓立体呈现出来。qt3d中只提供了三角形和四边形的绘制接口,所以想要将任意一个封闭多边形画出来,必须要进行平面多边形的三角剖分(所谓三角剖分就是将一个多边形或一个曲面,用互不重叠的三角形拼凑出来,类似于微积分中的用小的线段逼近一条曲线一样,这里用许多的小三角形逼近一个曲面)。我处理的多边形是最简单的一类,不含孔洞不自相交的多边形。


一、基础知识

如何判断两条线段不相交:有两条线段ab和cd,令u = (a-c)x(d-c),v = (b-c)x(d-c);p = (c-a)x(b-a),q = (d-a)x(b-a)。若u·v≤0且p·q≤0,ab与cd相交,否则不相交。

如何判断一个点是否在一个三角形内部:设三角形abc,顶点p,分别构造向量ab,ac,ap,pb,pc,三角形的面积可以通过两条边向量的叉积表示,S△abc = 0.5*abs(abxac);分别计算S△abc,S△abp,S△acp,S△pbc,若 |S△abc - (S△abp + S△acp + S△pbc)|<0.005那么说明p点在△abc的内部或者边缘上。

如何判断一个多边形 的顶点是凹点还是凸点:这个需要结合顶点序列的方向来判断,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值