高分求获得多边型面积的算法

AbnerChai 2003-08-20 04:19:20
是这样的,在做图程序中,用鼠标在屏幕上随意画一个封闭的多边型,多边型的边是直线,各顶点的坐标可以记录下来。那么如何求该多边形的面积呢?
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
opentuxedo 2003-08-20
  • 打赏
  • 举报
回复
可以把多边形每条边和X轴所夹的代数面积相加。
代数面积就是带正负号的面积:
A(x1,y1)B(x2,y2)和X轴所夹的代数面积是:
(x2-x1)*(y1+y2)/2
jmylf 2003-08-20
  • 打赏
  • 举报
回复

多边形面积的计算公式如下:设有n个点(x[1],y[1])(x[2],y[2]),...(x[n],y[n])围成一个没有边相交的多边形,则其围成的闭合多边形面积|S| 为:S=∑y[i] *(x[i+1]-x[i-1]), 其中i=1,2,...n,且当i与j除以n的余数相同的时候,x[i]=x[j],y[i]=y[j]。该公式用于凸凹多边形均可。
HUNTON 2003-08-20
  • 打赏
  • 举报
回复
上面的方法不管是凸多边形还是凹多边形都适用。
HUNTON 2003-08-20
  • 打赏
  • 举报
回复
这两天怎么老是有人问这个问题啊。
用这个方法吧:
我们都知道已知A(x1,y1)B(x2,y2)C(x3,y3)三点的面积公式为
|x1 x2 x3|
S(A,B,C) = |y1 y2 y3| * 0.5 (当三点为逆时针时为正,顺时针则为负的)
|1 1 1 |

对多边形A1A2A3、、、An(顺或逆时针都可以),设平面上有任意的一点P,则有:
S(A1,A2,A3,、、、,An)
= abs(S(P,A1,A2) + S(P,A2,A3)+、、、+S(P,An,A1))

P是可以取任意的一点,用(0,0)就可以了。


还有一个方法:
任意一个简单多边形,当它的各个顶点位于网格的结点上时,它的面积数S=b/2+c+1
其中:b代表该多边形边界上的网络结点数目
c代表该多边形内的网络结点数目

所以把整个图形以象素为单位可以把整个图形分成若干个部分,计算该图形边界上的点b和内部的点c就得到面积数S了,然后把S乘以一个象素的面积就是所求的面积了。
jack_wq 2003-08-20
  • 打赏
  • 举报
回复
中间任取一点,构造三角形就可以了!
jack_wq 2003-08-20
  • 打赏
  • 举报
回复
中间任取一点,构造三角形就可以了!
mct1025 2003-08-20
  • 打赏
  • 举报
回复
看看这个
http://expert.csdn.net/Expert/topic/2158/2158811.xml?temp=1.359195E-02

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧