vb计算多边形面积

急需一段完整的用vb求多边形面积的程序。
功能:用户依次输入各点坐标后就能得到此多边形面积!
我想要个直接的详细的程序代码。。。因为没时间去弄

Rem 凸n变形可以看成是n-1个三角形的面积
Rem 三角形的面积S=sqr(p*(p-a)*(p-b)*(p-c)),其中,p=(a+b+c)/2,a、b、c为边长,边长=sqr((x1-x2)^2+(y1-y2)^2),而(x1,y1)和(x2,y2)分别为两点的坐标值

Rem 以下代码为求任意多边形的面积,边数由用户自行决定

Private Sub Command1_Click()
Dim n, s, i, x(), y(), a, b, c, p
k:
n = Int(Val(Trim(InputBox("请输入多边形的边数:", "多边形面积", 3))))
If n < 3 Then MsgBox "边数必须≥3!请重试!", , "多边形面积": GoTo k
On Error Resume Next

ReDim x(1 To n), y(1 To n)
s = 0
For i = 1 To n
x(i) = Val(Trim(InputBox("请输入" & IIf(n = 3, "三角形", n & "边形") & "第" & i & "个点的横坐标:")))
y(i) = Val(Trim(InputBox("请输入" & IIf(n = 3, "三角形", n & "边形") & "第" & i & "个点的横坐标:")))
If i > 1 Then Line (x(i), y(i))-(x(i - 1), y(i - 1))
Next
For i = 2 To n - 1
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
s = s + Sqr(p * (p - a) * (p - b) * (p - c))
Next
MsgBox IIf(n = 3, "三角形", n & "边形") & "面积是" & s, , "多边形面积"
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-05-26
算法思想:
凸n边形有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)

代码(用户依次输入各点坐标(x,y)):
Private Sub Command1_Click()
'假定12边形
n = 12
s = 0
Dim x(12), y(12)
For i = 1 To 12
x(i) = InputBox("X(" & i & ")=")
y(i) = InputBox("Y(" & i & ")=")
Next
For i = 2 To 11
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 "多边形的面积为" & s
End Sub
第2个回答  2009-05-26
按部就班 就是了
学过初中 数学的人就会
很简单 我上次还写了个
第3个回答  2009-05-26
这东西不就是 数学书上的公式转化成vb的格式而已啊
第4个回答  2009-05-26
有时间了帮你写

用VB编写多边形的面积的程序,海伦公式;求两个填空得答案!
T = sqrt(L * (L-A) * (L-B) * (L-C))'这就是海伦公式

vb实现对多边形面积计算及面积分割。
其实如果是偶数边你只要把他看成是对称轴就行了。有可能是轴对称和中心对称。也就是说找到对边,使AB等于CD即可。如果是奇数边就要解方程。如A点为任一一点,先计算AB,AD直线分割的面积再列出方程解出C的坐标即可。

...gis中使用VB编写的一个程序,功能是计算多边形面积,出了点问题,请高...
Rem 三角形的面积S=sqr(p*(p-a)*(p-b)*(p-c)),其中,p=(a+b+c)\/2,a、b、c为边长,边长=sqr((x1-x2)^2+(y1-y2)^2),而(x1,y1)和(x2,y2)分别为两点的坐标值 Rem 以下代码为求任意多边形的面积,边数由用户自行决定 Private Sub Command1_Click()Dim n, s, i, x(...

VB中怎么实现多边形区域填充
If PtInRegion(hRegion, X, Y) Then Debug.Print "In 在多边形区域"End If End Sub Private Sub Form_Unload(Cancel As Integer)DeleteObject hRegion DeleteObject hBrush End Sub

vb有意思的小程序 ?
h=ScaleY(Form1.Height,vbTwips,vbPixels)MyRgn=CreateRectRgn(0,0,0,0)OutRgn=CreateRoundRectRgn(30,30,w-30,h-30,100,100)InRgn=CreateEllipticRgn(100,100,w-100,h-100)CallCombineRgn(MyRgn,OutRgn,InRgn,RGN_DIFF)CallSetWindowRgn(Form1.hWnd,MyRgn,True)Form1.BackColor=QBColor(4)End...

跪求vb.net代码
公式的代码其实更简洁如下图:分别有多边形的边数、半径、起始的角度(最右边的中间角点与中心点的连线角度)、螺旋线步数等等都是可控的变量。大家可以试试改动一些参数后的图形效果

vb6.0 的多边形区域 填充样式
好像只能使用Api,vb处理多边形填充可以使用PSET试试。

如何判断一个点是否在一个多边形内vb
只能给出思路:从这个点开始向每条边作射线,判断其穿过的边数,如果是奇数,则此点位于多边形内。如果所有边的结果都如此。则此点必在多边形内。

vb怎么在一个圆内画一个正五边形?写下代码!
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)Dim i As Integer Dim S As Integer Dim Pi As Single Dim r As Single Pi = 3.1415926 r = 500 S=5 '多边形边数 Circle (X, Y), r PSet (X, Y - r)For i = 1 To S Line -...

vb怎么画多边形,输入坐标,画出这些点围起来的图形,怎么做啊
object.Line [Step] (x1,1) [Step] (x2,y2), [color], [B][F]Line 方法的语法有以下对象限定符和部分:部分 描述 object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点 的 窗体作为object。Step 可选的。关键字,指定起点坐标,它们相对于由...

相似回答