unity模型制作(四):绘制一个凹多边形

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

(不重要的前言:该博文为系列博文,每一篇有前后文关系,例如基类、组件的集成,如果发现有陌生组件和基类,请查看前面文章,本系列文章单纯应用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是一个耳朵

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左右...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值