七、OSG绘制空间凹多边形并计算其面积

目录

概述

实现原理

代码

运行截图


概述

通过多边形分格化和几何图元遍历来解决OSG绘制凹多边形并计算其面积的问题。在OpenGL/OSG中,由于效率的原因,默认是直接显示的简单的凸多边形。如果直接强行显示凹多边形,渲染结果是不确定的。所以对于复杂的凹多边形,需要将其分解成简单的凸多边形,这个过程就是多边形分格化。在OSG中是通过osgUtil::Tessellator类来实现多边形分格化的。

分格化几何体的类型:

enum TessellationType {
    TESS_TYPE_GEOMETRY, // tessellate everything in the geometry object,分格化几何体
    TESS_TYPE_DRAWABLE, // tessellate each polygon, triangles & quads drawables in geometry separately分格化几何体中的Drawable
    TESS_TYPE_POLYGONS // tessellate ONLY polygon drawables in geometry separately只分格化几何体中的多边形
};

多边形分格化还有一个很重要的概念,环绕数。

《OpenGL编程指南》中:“只有一条轮廓线时,每点的环绕数为该绕轮廓一周的过程中经过该点的次数,逆时针为正,顺时针为负。有多条轮廓线时,将分别绕个轮廓线一周得到的环绕数相加。每个点都对应一个有符号的整数值,在同一个区域内,所有点的环绕数都相同。实际这个定义有误,在实际编程中,如对下面程序左下角和右下角的轮廓线而言,此定义是错误的。本人通过实际编程认为环绕数应该针对区域中的点,而

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值