四叉树被描述通过对应每个父节点传递四个子节点,在一个地形渲染上下文里,根节点将会表达为这个围绕地形的正方形区域集,自节点表示为“左上”,“右上”,“左下”和“右下”象限,这些象限由根节点组成并且每一个都是由四个字节点递归的定义下面的描述将会说明这些概念一个四元数的数据结构并不负责,下面的伪码演示了这个四叉树的节点:TPosition = record
x,y : float;
end;PQuad = pointer to TQuadNode;
TQuad = record
p1,p2,p3,p4 : TPosition; // corners
c1,c2,c3,c4 : PQuadNode; // children
end;一个简单的递归初始化一个深度为max_depth的四叉树如下:function InitQuad(x,y,w : float; lev : int) : PQuad;
var
tmp : PQuad;
begin
inc(lev);
if lev > max_depth then return(nil);
new(tmp);
...initialize tmp node with corner data
w := w / 2;
tmp^.c1 := InitQuad(x - w, y - w, w, lev);
tmp^.c2 := InitQuad(x - w, y + w, w, lev);
tmp^.c3 := InitQuad(x + w, y + w, w, lev);
tmp^.c4 := InitQuad(x + w, y - w, w, lev); return(tmp);
end;
怎么把上面的伪代码,写成delphi中能运行的源程序啊,。
x,y : float;
end;PQuad = pointer to TQuadNode;
TQuad = record
p1,p2,p3,p4 : TPosition; // corners
c1,c2,c3,c4 : PQuadNode; // children
end;一个简单的递归初始化一个深度为max_depth的四叉树如下:function InitQuad(x,y,w : float; lev : int) : PQuad;
var
tmp : PQuad;
begin
inc(lev);
if lev > max_depth then return(nil);
new(tmp);
...initialize tmp node with corner data
w := w / 2;
tmp^.c1 := InitQuad(x - w, y - w, w, lev);
tmp^.c2 := InitQuad(x - w, y + w, w, lev);
tmp^.c3 := InitQuad(x + w, y + w, w, lev);
tmp^.c4 := InitQuad(x + w, y - w, w, lev); return(tmp);
end;
怎么把上面的伪代码,写成delphi中能运行的源程序啊,。
解决方案 »
- 请高手帮忙把这小段代码转成delphi的,谢谢
- (在线等100分!)如何在分窗口中调用主程序中的程序来更新主程序中的数组?
- FTP的PORT模式和PASV模式的问题。谢谢高手。
- 如何将一个sqlserver数据库中的所有表中的某一字段删除?
- 其他数据库如何转换成sql-server???
- 在一个DBGrid中如何显示2个数据表里面的数据
- 如何解决在保存数据库时出现“查询过于复杂”的错误(ACCESS数据库)
- 我想把我的delphi的FORM上的TREEVIEW上的节点的名字拖放到IE窗体中的TEXT上!!!
- 請問一下*.nyf格式的檔案用什麼打開?
- 在vc++中有很多类型,如HDC,HWND,FARAPROC...,这些对应在DELPHI中是什么啊?
- 一个类当中有TTimer控件,而我想在另外一个类当中调用,请问如何使用?
- ADOQuery +Access +DBGrid的问题
TQuad = record
p1,p2,p3,p4 : TPosition; // corners
c1,c2,c3,c4 : PQuad; // children
end;
http://www.cnblogs.com/youweibin/archive/2009/05/12/1454896.html