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
[解决办法]