zoukankan      html  css  js  c++  java
  • 计算几何-多边形的重心(转载)

    from:http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html

    1. 1 累加和求重心
    设平面上有N 个离散数据点( xi , yi ) ( i = 1, 2, ., n) , 其
    多边形重心G( . x1, . y1) 为:

      

      这是求多边形最简单直观的方法。可以直接利用离散数
    据点的x, y坐标就能求图形重心。但是缺陷在于没有对离散
    数据点所围图形做任何处理和分析,精度不够。

    1. 2 算法一:在讲该算法时,先要明白下面几个定理。
    定理1 已知三角形△A1A2A3的顶点坐标Ai ( xi , yi ) ( i =1, 2, 3) 。它的重心坐标为:

      xg = (x1+x2+x3) / 3 ;                       yg = (y1+y2+y3) / 3 ;

    定理2 已知三角形△A1A2A3的顶点坐标Ai ( xi , yi ) ( i =1, 2, 3) 。该三角形的面积为:

      S =  ( (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) ) / 2 ;

      △A1A2A3 边界构成逆时针回路时取+ , 顺时针时取 -

      另外在求解的过程中,不需要考虑点的输入顺序是顺时针还是逆时针,相除后就抵消了。

      原理:将多边形划分成n个小区域, 每个小区域面积为σi ,重心为Gi ( . xi , . yi ) ,利用求平面薄板重心公式把积分变
      成累加和:

        

                               

                      

        由前面所提出的原理和数学定理可以得出求离散数据点所围多边形的一般重心公式:以Ai ( xi , yi ) ( i = 1, 2, ., n) 为顶点的任意N边形A1A2 .An ,将它划    分成N - 2个三角形(如图1) 。每个三角形的重心为Gi ( . xi , . yi ) ,面积为σi。那么多边形的重心坐标G( .x2, .y2) 为:

      

                    图1  多边形分解

       例题:HDU 1115 Lifting the Stone

  • 相关阅读:
    jquery 查找 新建元素
    sphinx中,直接取主键ID
    把一个文件夹下的多个csv文件合并到一个excel的多个sheet
    学习XOR
    数据结构C++,线性表的实现(数组方式)
    确定主机字节序
    TCP打开文件传输(客户端code)
    使用两个管道的客户服务器模型
    数据结构C++,栈的实现
    TCP打开文件传输(服务器端并发code)
  • 原文地址:https://www.cnblogs.com/little-w/p/3581296.html
Copyright © 2011-2022 走看看