如题
解决方案 »
- 求求求求大家了,急急急急,谁能给我个答案啊
- 如何判断一个变量所指向的内存空间是有效的(即没有被释放)?
- 一个很奇怪的问题,在Delphi里编译可运行的程序不能直接用EXE运行
- dbGrid的小问题(分数只给一个人)
- DBGRID---------------在线等
- 自定义Component(继承TComponent),可是安装后,在控件栏上可以找到myComponent1,但是调用时却找不到函数ShowMsg???
- 怎样实现浮雕/水印字体的编程?
- 全部奉献了大家帮忙
- 现在实现了两个listbox的相互拖拽 怎么实现禁止他们的自身拖拽? 50分 在线 可行方案 立马给分
- 请问,如何判定光标停在edit中的第几个位置?
- 如何在WINDOWS2000下屏蔽WINDOWS键
- 决定离开<星际>和<CS>,散分!
面积咋求??
“Delphi之未经证实的葵花宝典version 2.7”就有一个算法。
分呢?
type
PXY = ^TXY;
TXY = record // 点的数据结构
x, y: single;
end;
XYArray = array[0..MaxPointNum] of TXY;
PXYArray = ^XYArray; // 线/面的数据结构// 积分方法求多边形/面状图形的面积
// 多边形坐标在 xys 中,点数在 nn 中
function AreaOfPolygon(xys: PXYArray; nn: integer):single;
var ii:integer;
ss: single;
begin
ss := 0;
for ii := 0 to nn-2 do
ss := ss + (xys^[ii].y+xys^[ii+1].y) * (xys^[ii].x-xys^[ii+1].x) / 2;
result := abs(ss);
end;// 判别点(x,y)是否落在多边形内
// 多边形坐标在 xys 中,点数在 nn 中
function isPtInRegion(x, y: single; xys: PXYArray; nn: integer): boolean;
var ii, ncross : integer;
yt, x0, y0, x1, y1, x2, y2 : single;
begin
ncross := 0;
x0 := x; y0 := y;
for ii := 0 to nn-2 do begin
x1 := xys^[ii].X; y1 := xys^[ii].Y;
x2 := xys^[ii+1].X; y2 := xys^[ii+1].Y;
if((x0>=x1) and (x0=x2) and (x00) and ((ncross mod 2) = 1)) then Result := True
else Result := FALSE;
end;