Center of gravity of a polygon

后端 未结 7 909
遥遥无期
遥遥无期 2020-12-02 16:13

I am trying to write a PHP function that will calculate the center of gravity of a polygon.

I\'ve looked at the other similar questions but I can\'t seem to find a s

7条回答
  •  伪装坚强ぢ
    2020-12-02 16:35

    Since we are all having so much fun implementing this algo in different languages, here is my version I knocked up for Python:

    def polygon_centre_area(vertices: Sequence[Sequence[float]]) -> Tuple[Sequence[float], float]:
        x_cent = y_cent = area = 0
        v_local = vertices + [vertices[0]]
    
        for i in range(len(v_local) - 1):
            factor = v_local[i][0] * v_local[i+1][1] - v_local[i+1][0] * v_local[i][1]
            area += factor
            x_cent += (v_local[i][0] + v_local[i+1][0]) * factor
            y_cent += (v_local[i][1] + v_local[i+1][1]) * factor
    
        area /= 2.0
        x_cent /= (6 * area)
        y_cent /= (6 * area)
    
        area = math.fabs(area)
    
        return ([x_cent, y_cent], area)
    

提交回复
热议问题