S02E09:多边形的顶点平均值中心

1,261 阅读1分钟

说明

多边形的平均值中心,其实就是各个顶点坐标的算术平均值。

除了平均值中心外,多边形还有:

  • 边界盒中心:求出 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)
}