首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB 6.0 多边形面积有关问题,老生常谈

2013-06-19 
VB 6.0 多边形面积问题,老生常谈我是想用鼠标在picture上画多边形,一个个顶点点 最后一个封闭m 是顶点数

VB 6.0 多边形面积问题,老生常谈
我是想用鼠标在picture上画多边形,一个个顶点点 最后一个封闭

    'm 是顶点数 p是各个顶点的x y
    If m < 3 Then
        Area = 0
    End If
    a = 0 
    For i = 0 To m - 1
        a = a + p(i).X * p(i + 1).Y - p(i).Y * p(i + 1).X
    Next

    Area = 0.5 * Abs(a)

为什么我统计出来的面积不准?同样的重新做两遍计算结果相差甚远,或者两个看着差不多大的面积 结果却相差非常多,这个算法有问题么? 多边形
[解决办法]
VB的坐标系统和笛卡尔的不同,这是其一,其二,你要避免那种中间镂空的多边形。你的公式只能算简单多边形。
[解决办法]
ls的先生,VB的坐标系统和笛卡尔的不同,会影响三角形的面积,从而影响多边形的面积?
[解决办法]
查了一下任意多边形面积公式:
S = 1/2∑i=1(XiYi+1-Xi+1Yi)
你写的公式:
a = a + p(i).X * p(i + 1).Y - p(i).Y * p(i + 1).X
看起来是正确的
但是没有考虑到最后一个顶点
公式其实应该是XnY1-X1Yn了
所以:
For i = 0 To m - 2
  a = a + p(i).X * p(i + 1).Y - p(i + 1).X * p(i).Y
  if i = m - 2 then a = a + p(i + 1).X * p(0).Y - p(0).X * p(i + 1).Y
Next
[解决办法]

引用:
Quote: 引用:

ls的先生,VB的坐标系统和笛卡尔的不同,会影响三角形的面积,从而影响多边形的面积?

那如何解决呢?我如何能得到正确的面积,是凸多边形


我用坐标试验了阿,是正确的。记得加上
if i = m - 2 then a = a + p(i + 1).X * p(0).Y - p(0).X * p(i + 1).Y

跟你说个方法
1,用固定坐标,用已知的数值测试
2,在上面画简单图形,比如矩形。然后自己算出来

热点排行