(不重要的前言:该博文为系列博文,每一篇有前后文关系,例如基类、组件的集成,如果发现有陌生组件和基类,请查看前面文章,本系列文章单纯应用unity的mesh来绘制模型,并未使用任何三方插件,文章内容、代码都是纯手打,望支持)
1.凹多边形相对凸多边形要复杂很多,画出一个凹多边形需要分两步:
1.1.在平面几何上拆解凹多边形,分成若干个三角形(耳朵),和一个凸多边形。
1.2.将所有耳朵视为一个三角面,加上最后一个凸多边形,合并成图形
2.名词说明
耳朵:一个点和前后两点相连构成的三角形不和多边形其他边线相交,且该点是凸点
凹多边形:包含凹点的多边形就是凹多边形
凹点:此点在(多边形删除此点后的)新多边形的内部
凸点:此点在(多边形删除此点后的)新多边形的外部
3.详解1.1拆解流程:
3.1.判断多边形是一个凹多边形,否则返回凸多边形算法
3.2.遍历多边形每一个点,判断该点是不是凸点,不是就判断下一个点
3.3.如果是凸点,且和前后相连是一个耳朵,则从多边形中去除该点,回到1
可以看到,此算法必然是一个递归,每一层会切掉一个耳朵,直到只剩下一个凸多边形
再按照1.2处理,就可以拼接出一个凹多边形。
4.举个例子:

如图12345是一个凹多边形,完成以下拆解步骤:
a. 12345是一个凹多边形,1号点是凸点,但15线会与34线相交,因此125不是一个耳朵
b. 2号点是凸点,且123是一个耳朵

本文介绍了一种在Unity中绘制凹多边形的方法,包括如何将凹多边形拆解为多个三角形(耳朵)和一个凸多边形,然后将它们合并成最终的图形。文中详细解释了判断凹凸点、耳朵切割等关键步骤。
最低0.47元/天 解锁文章
5984

被折叠的 条评论
为什么被折叠?



