在前端开发,特别是在游戏前端开发过程中,很多场景下需要求一个多边形的质心。比如在构建由多边形组成的地图时,为了美观我们需要把地名标注在地图的质心处,游戏重力场中的多边形物体需要根据质心来计算其运动规律。本文详述了求解多边形质心的思考过程。
一、从一个简单的系统开始
上图是一个由a,b两个点组成的系统,其中a的质量为ma,b的质量为mb。我们可以根据杠杆的平衡原理,求得这两点的重心(设为k)。即:
(k.x-a.x)mag1=(b.x-k.x)mbg2
k.x=(a.x*mag1+b.x*mbg2)/(mag1+mbg2)
在均匀的重力场中,即g1=g2等情况下,质心和重心重合,因此这个系统的质心为:
k.x=(a.x*ma+b.x*mb)/(ma+mb)
二、多个点的系统
1.三个点的情况
加入c点,设c点处质量为mc,我们把a,b当成一个子系统,令子系统质量为mk,则mk=(ma+mb)。设系统质点坐标点为l,用同样的方式可推导出: