本文思路:在凸多边形的基础上將凹多边形用向量延长线法分割成多个凸多边形然后按照凸多边形的算法计算。凸多边形比较简单就不介绍记录了。
几个凹多边形算法的思路:
1.顶点数组必须是有序(顺时针或者逆时针)
3.需要将Z轴值置0.
1.顶点有序化。(此文暂时不记录)
2.顶点数组转换成对应的方向向量數组
3.依次利用叉乘查找到第一个凹多边形的凹点。
4.从这个点开始往后找到这个凹点的向量延长先在之后的向量上的第一个交点(注意順序,而不是从数组0开始)
5.以这个交点为界限把凹多边形分为两个多边形
6.递归这个切分算法,直至不再有凹多边形出现为止
7.得到的多個多边形都是属于凸多边形,利用凸多边形算法计算
/*从多边形的有序的点数组获取顶点和三角面数据信息(凹凸多边形) 参数2: 是否是逆时针 /*检查多边形是否是凹多边形,如果是就切割 参数2:需要返回的被切割多边形1 参数2:需要返回的被切割多边形2 /*给定点数组的Z值统一化 /*根据点数组获取向量数组 /*从向量数组中获取一个向量在这个数组中的延长线与其他向量的交点
注意:顺序必须先从这个向量的下标开始鈈能是0;交点不包括向量端点 参数2:对应的点数组(长度需保持一致) 参数3:这个向量的下标 参数4,5:开始和结束下标 参数67: 根据交点被切汾的两组点数组 返回值:true 为成功,反之无 //给分割的多边形点组加点
}