opengl es画凹多边形问题:切割凹多边形为三角形
来源:互联网 发布:风速仪上位机软件 编辑:程序博客网 时间:2024/05/01 21:20
最近在ndk里面用OpenGL es画海图,然后发现opengl不能直接画凹多边形(只能直接画点、线、三角形),所以寻找多边形切割为三角形的算法。主要方法列举:
http://vterrain.org/Implementation/Libs/triangulate.html
1.其中Efficient Polygon Triangulation方法最简单快捷,但是经过我测试,如果是复杂多边形(有重复点,自交,带洞,反向折叠等)则此办法会出错,如果是简单多边形这这个算法最好,算法也简单容易看懂:函数按顺时针取3个点判断是否为凸角(同时其他点不得在其内),如果条件满足则去掉这三点中的中间点,切除出一个三角形,剩下多边形继续切割直到完成。
Area函数:计算多边形面积。如果计算的多边形面积是负的则说明是逆时针取点。
InsideTriangle函数:判断P是否在ABC三角形内(用的向量差积法,其实也是面积法)。
Snip函数:判断三点条件。
Process切割函数,当snip满足时,去除一个点,给多边形重新编号,取点向后移2位。(m变量是多余的,作者可能是误写了)。
2.如果你的多边形是复杂的(有重复点,自交,带洞,反向折叠等),则推荐使用GPC(General Polygon Clipping)算法(介绍:http://www.cs.man.ac.uk/~toby/alan/software/gpc.html),其中gpc_tristrip_clip函数是把多边形切割为三角形。算法用的是取顶点画X轴平行线取交点然后划分三角形。具体用法见:http://www.2cto.com/kf/201504/394266.html,另外如果多边形带洞,要用myPolygon.hole指定设置。
0 0
- opengl es画凹多边形问题:切割凹多边形为三角形
- OpenGL Tessellation绘制凹多边形
- OpenGL-学习之路-简单多边形显示 及 多边形类型判断 和 凹多边形的切割 (待更新)
- 凹多边形画法
- 凸,凹多边形定义
- UE4 凹多边形渲染
- OpenGL GL_EDGE_FLAG、GL_POLYGON_MODE、glPolygonMode组合使用将凹多边形切割成凸多边形绘制
- 求三角形重心 包括凹多边形的模板
- 如何识别分割凹多边形
- OpenGL里用gluTessBeginPolygon画带孔和凹多边形需要非常注意的一个问题!
- OpenGL里用gluTessBeginPolygon画带孔和凹多边形需要非常注意的一个问题!
- 判断一个图形是否为凹多边形(1)
- 判断一个图形是否为凹多边形(2)
- OpenGL非规则多边形(凹多边形,凸多边形)二维纹理映射(填充)
- OpenCV画椭圆、实心圆、凹多边形、线段、矩形
- 顶角判别法识别多边形的凸凹性,并将凹多边形近似处理为凸多边形
- 凸多边形和凹多边形的判断
- 任意多边形的面积计算(包括凹多边形的)
- 8.Oracle BBED解析数据块——BBED基本使用五
- 9.Oracle BBED解析数据块——BBED基本案例一改变数据
- 使用Jquery获取Bootstrap Radio Group当前选中的单选框的值
- textView输入无效
- hdu1143 Tri Tiling
- opengl es画凹多边形问题:切割凹多边形为三角形
- c语言俄罗斯方块
- linux运行时动态调整内核参数工具sysctl学习小结
- 互联网名人巨头演讲,会议。
- JAVA基础笔记3--JDBC入门
- 设计模式简介
- 蓝桥杯:基础练习 十六进制转十进制
- 解决layer层圆角引发的性能问题
- bzoj2115 线性基 异或