Ignore:
Timestamp:
10/10/06 00:59:59 (18 years ago)
Author:
bittner
Message:

support for kd tree based pvs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/KdTree.cpp

    r1584 r1594  
    13921392} 
    13931393 
    1394  
    1395 } 
     1394KdIntersectable * 
     1395KdTree::GetOrCreateKdIntersectable(KdNode *node) 
     1396{ 
     1397 
     1398  if (node == NULL) 
     1399        return NULL; 
     1400   
     1401  // search nodes 
     1402  std::map<KdNode *, KdIntersectable *>:: 
     1403        const_iterator it = mKdIntersectables.find(node); 
     1404   
     1405  if (it != mKdIntersectables.end())  
     1406        { 
     1407          return (*it).second; 
     1408        } 
     1409   
     1410  // not in map => create new entry 
     1411  KdIntersectable *kdObj = new KdIntersectable(node); 
     1412  mKdIntersectables[node] = kdObj; 
     1413   
     1414  return kdObj; 
     1415} 
     1416 
     1417KdNode * 
     1418KdTree::GetNode(const Vector3 &point, 
     1419                                const float maxArea) const 
     1420{ 
     1421  KdNode *node = mRoot; 
     1422   
     1423  while (!node->IsLeaf() && (GetSurfaceArea(node) > maxArea) ) { 
     1424        KdInterior *inter = (KdInterior *)node; 
     1425        if (point[inter->mAxis] < inter->mPosition) 
     1426          node = inter->mBack; 
     1427        else 
     1428          node = inter->mFront; 
     1429  } 
     1430   
     1431  return node; 
     1432} 
     1433 
     1434 
     1435} 
Note: See TracChangeset for help on using the changeset viewer.