|
|
发表于 2005-11-7 20:59:00
|
显示全部楼层
Re:跪 求 4叉树 DX版本 代码
4叉树实现5花8门,没什么具体版本,主要看具体作用的。我给个地形可视的。
就一个函数。
BOOL _update_visible_grid(long gx, long gy, long gStride, ZRectF br, ZXZViewRange* pView){
///比较Rect;
if(!pView->mViewR.IntersectRect(br))return FALSE;
///比较视区
ZVector3 vMin(br.x1, 0, br.y1);
ZVector3 vMax(br.x2, 0, br.y2);
if(!ZD8Tool::CmpRectPolylineCross_(&vMin, &vMax, &pView->mP1, &pView->mP2, &pView->mP3, &pView->mP4))return FALSE;
///是合格的;
if(gStride <=1){
gx--, gy--;
GetGrid_(gx, gy)->visibleNO = mVisibleNO;
return TRUE;
}
////检查4个子树;
///12
///03
gStride /=2;
br.Half();
gx -= gStride/2;
gy -= gStride/2;
////检查0树;
_update_visible_grid(gx, gy, gStride, br, pView);
////检查1树;
br.MoveDown();
gy += gStride;
_update_visible_grid(gx, gy, gStride, br, pView);
////检查2树;
br.MoveRight();
gx += gStride;
_update_visible_grid(gx, gy, gStride, br, pView);
////检查3树;
br.MoveUp();
gy -= gStride;
_update_visible_grid(gx, gy, gStride, br, pView);
return TRUE;
}
|
|