说明
多边形的平均值中心,其实就是各个顶点坐标的算术平均值。
除了平均值中心外,多边形还有:
- 边界盒中心:求出 AABB 盒,或者 OBB盒, 再得到中心坐标;
- 重心:分割为三角形,将小三角形重心坐标按其面积加权平均,再除以总面积,得到重心坐标;
几何
计算过程比较简单,就是相加求和,再除以总顶点数就行了。
需要注意的是:
- 对于凹多边形来说,平均值中心不一定在多边形内部;
- 对于三角形来说,平均值中心就是三角形的重心;
- 对于正多边形来说,平均值中心就是几何中心,也就是重心;
- 对于普通四边形及更多边形来说,平均值中心与真正的重心并不重合;
代码
///平均值中心:各顶点平均值
static func averageCenter(polygon:Polygon) -> simd_float3 {
var center = simd_float3.zero
for point in polygon.points {
center += point
}
return center / Float(polygon.count)
}