如题,依次点若干个点,形成一个多边形,如何计算其面积.
主要想请教大家多边形面积的计算公式,不过有代码示范那就最好了.

解决方案 »

  1.   

    确实很简单。
    有N个顶点:A1,A2,A3,A4,...An的多边形,坐标为(x1,y1),(x2,y2),(x3,y3),...(Xn,Yn)
    切割成S123,S134,S145,...S1(n-1)n,其中S123为A1A2A3的三角行。
    三角形的面积:S=sqr(p*(p-a)*(p-b)*(p-c)) ,p=(a+b+c)/2,a、b、c为边长,a=sqr((x1-x2)^2+(y1-y2)^2)
      

  2.   

    Private Sub Command1_Click()
    '假定10边形
    n = 10
    s = 0#
    Dim x(10), y(10)
    For i = 1 To 10
    x(i) = InputBox("X(" & i & ")=")
    y(i) = InputBox("Y(" & i & ")=")
    Next
    For i = 2 To 9
    a = Sqr((x(1) - x(i)) ^ 2 + (y(1) - y(i)) ^ 2)
    b = Sqr((x(1) - x(i + 1)) ^ 2 + (y(1) - y(i + 1)) ^ 2)
    c = Sqr((x(i) - x(i + 1)) ^ 2 + (y(i) - y(i + 1)) ^ 2)
    p = (a + b + c) / 2
    s0 = Sqr(p * (p - a) * (p - b) * (p - c))
    s = s + s0
    Next
    MsgBox "多边行的确面积:" & sEnd Sub
      

  3.   

    S=sqr(p*(p-a)*(p-b)*(p-c)) 公式没问题,算法中只适用于凸多边形计算:所有切割出来的三解形以多边形某一固定顶点为公用顶点,将切出来的所有三角形面积加在一起。不过如果多边弄要是凹的这种算法就不成立了的,应该将所有切出来的三解形先按凸形对待计算总面积,再找出凹下去的点,与之相邻的另两个节点共同组成的三角形面积应该和上述总面积作减法处理,每个凹点都要这样作减法。不过难就难在判断哪些点是凹。太烦了,我没找到好办法,只提供一个可能不怎么的的思路。
      

  4.   

    首先要判断多边形的形式。取多变形的一条边,也就是取两个相邻的点,根据两点坐标可以确定一条直线的函数式y=f(x),这是初中解析几何的知识就不再罗嗦。把其余的点的x坐标代入函数式。例如有(x1,y1),(x2,y2)……(xi,yi)点,分别计算 d1=y1-f(x1),d2=y2-f(x2)……di=yi-f(xi),如果计算的结果中存在异号的情况(部分为正值部分为负值)则立即判定为凹多边形,如果计算的结果全部同号(全正或者全负)那么就用上面的办法计算下一条边直至所有的边都遍历一遍。对于凸多边形,任取一点作与其他点的连线把整个多边形分割成为诺干个三角形,根据三角公式计算各个三角形的面积进行累加对于凹多边形,先将多边形分割成为诺干个凸多边形后计算面积
      

  5.   

    任意n(凹凸)边形面积计算公式x(n+1)=x1
    y(n+1)=y(1)
    for i=1 to n
        s=x(i)*y(i+1)-y(i)x(i+1)
    next
    s=s/2
    这个公式可以用有向三角形推出来
    逆时针结果为正,顺时针为负