多变形面积(50分)

  • 主题发起人 主题发起人 hug
  • 开始时间 开始时间
H

hug

Unregistered / Unconfirmed
GUEST, unregistred user!
在离线数据库里面搜索了一下,发现计算多边形面积的方法如下:
TFloatPoint是定义的一种符点型的点
type
Tfloatpoint=Record
x:double;
y:double
end;
function AreaOfPolygon(var RecArr: array of TFloatPoint):single;
var
Index,Long:integer;
Area: single;
begin
Long:=Length(RecArr);
Area := 0;
for Index := 0 to Long-2 do
Area := Area + (RecArr[Index].y+RecArr[Index+1].y) *
(RecArr[Index].x-RecArr[Index+1].x) ;
result := abs(Area/2);
end;
计算结果我发现不对,最简单的三角形的面积就不对,可为什么打富翁里面还
这么多这个公式?
 
是有错误:
function AreaOfPolygon(var RecArr: array of TFloatPoint):single;
var
Index,Long:integer;
Area: single;
begin
Long:=Length(RecArr);
Area := 0;
for Index := 0 to Long-2 do <<--------- 这里应该为Long - 1!
Area := Area + (RecArr[Index].y+RecArr[Index+1].y) *
(RecArr[Index].x-RecArr[Index+1].x) ;
result := abs(Area/2);
end;
 
谢谢
我更改了,计算结果还是不对
例如坐标(15,17),(62,45)(11,66)
用AreaOfPolygon计算结果是 1736.5
用海伦公式计算结果是1207.5
 
晕, 我算出来是1211.5啊
(17 + 45)*(15 - 62) + (45 + 66)*(62 - 11) +( 66 + 17)*(11 - 15) = -2914 + 5661 - 324 = 2423
除2 = 1211.5.
 
哦,
我再看看,是不试我的程序有问题,谢谢
 
呵呵,知道了,还有一个错误,这样才对:
function AreaOfPolygon(var RecArr: array of TFloatPoint):single;
var
Index,Long, NextIndex:integer;
Area: single;
begin
Long:=Length(RecArr);
Area := 0;
for Index := 0 to Long-1 do <<--------- 这里应该为Long - 1!
begin
if Index < Long-1 then
NextIndex := Index + 1
else NextIndex := 0;
Area := Area + (RecArr[Index].y+RecArr[NextIndex].y) *
(RecArr[Index].x-RecArr[NextIndex].x) ;
end;
result := abs(Area/2);
end;
 
我看该公式几何意义是各个点做X周的垂线,求梯形面积,怎么能证明就是
多变形的面积呢〉?
谢谢
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
574
import
I
后退
顶部