zoukankan      html  css  js  c++  java
  • 任意多边形的面积计算

    任意给出一个三角形ΔABC,设其顶点坐标分别为A(x1, y1),B(x2, y2),C(x3, y3),那么根据线性代数的知识,ΔABC的有向面积可表示为:

     

    其中,ΔABC顶点A、B、C逆时针给出时有向面积为正,顺时针给出时有向面积为负。如图1所示,S∆ABC>0、S∆ABD<0.

     

    图1

    我们知道任意的多边形都可以分割成多个三角形,根据以上三角形面积公式就可以求出任意多边形的面积。如图2所示的六边形顶点坐标分别为O(x0, y0),A(x1, y1),B(x2, y2),C(x3, y3),D(x4, y4),E(x5, y5),则其面积可以表示为四个三角形面积之和:S=S∆OAB+S∆OBC+S∆OCD+S∆ODE

    其中:

     

    所以

     

     

     

    图2

    在这里,前文给出的多边形示例是一个凸多边形,那么这一结论适用于凹多边形吗?下面我们看看如图3所示的凹多边形。

     

    图3

    按照上面的思路,这里的凹多边形面积表示为:S=S∆OAB+S∆OBC+S∆OCD,从前面介绍可以知道

    S∆OAB=-S∆OBA<0,所以很明显上式是成立的,即此公式也适用于凹多边形。

    经过以上分析,给出任意一个多边形,其顶点坐标依次为(x0,y0),(x1,y1),(x2,y2),...,(xn,yn)(其中n=2,3,4,…),则其面积可表示为:

     

    换句话说,若已知多边形边上的每一点坐标,我们就可以求出该多边形的面积,包括如图4所示的曲线图形,当从O点到A点到O点的曲线上每一点坐标都已知时就能求出该曲线图的面积。

     

    图4

    <script>
        function square(x,y) {
    //数组x,y分别按顺序存储各点的横、纵坐标值
            var sum0=0;
            for (var i = 0; i < x.length - 1; i++) {
                sum0 += (x[i] * y[i + 1] - x[i + 1] * y[i]);
            }
            var square = (Math.abs(sum0 + (x[x.lenght] * y[0]) - (x[0] * y[x.lenght]))) / 2;
            return square;
        }
    </script>
    

      

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/zxz666/p/11068542.html
Copyright © 2011-2022 走看看