我是想用鼠标在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)为什么我统计出来的面积不准?同样的重新做两遍计算结果相差甚远,或者两个看着差不多大的面积 结果却相差非常多,这个算法有问题么?多边形
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)为什么我统计出来的面积不准?同样的重新做两遍计算结果相差甚远,或者两个看着差不多大的面积 结果却相差非常多,这个算法有问题么?多边形
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
S = ∑i=1(XiYi+1-Xi+1Yi)/2
这个公式是算任意形状多边形的
当然了
除了6楼说的那种内部镂空的
if i = m - 2 then a = a + p(i + 1).X * p(0).Y - p(0).X * p(i + 1).Y跟你说个方法
1,用固定坐标,用已知的数值测试
2,在上面画简单图形,比如矩形。然后自己算出来
if i = m - 2 then a = a + p(i + 1).X * p(0).Y - p(0).X * p(i + 1).Y跟你说个方法
1,用固定坐标,用已知的数值测试
2,在上面画简单图形,比如矩形。然后自己算出来谢谢,我实现了(楼下的哥们 我看了,谢谢),而且用另外一种方法,分割三角形的方法也实现了,但是,我发现这个只局限于凸多边形,如果是凹多边形可能就行了吧
if i = m - 2 then a = a + p(i + 1).X * p(0).Y - p(0).X * p(i + 1).Y跟你说个方法
1,用固定坐标,用已知的数值测试
2,在上面画简单图形,比如矩形。然后自己算出来谢谢,我实现了(楼下的哥们 我看了,谢谢),而且用另外一种方法,分割三角形的方法也实现了,但是,我发现这个只局限于凸多边形,如果是凹多边形可能就行了吧同学你要从数学角度出发先,这个公式是对于任意多边形的。但是不能有内空的
你要抽象出来数学公式然后变成程序
你的那个程序不是自己写的?