Ignore:
Timestamp:
05/24/08 11:59:35 (16 years ago)
Author:
mattausch
Message:

enabled view cell visualization

File:
1 edited

Legend:

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

    r2691 r2705  
    3434 
    3535KdNode::KdNode(KdInterior *parent): 
    36 mParent(parent), mMailbox(0), mIntersectable(NULL), mMailbox2(0) 
     36mParent(parent),  
     37mMailbox(0),  
     38mIntersectable(NULL),  
     39mMailbox2(0), 
     40mNumObjects(0) 
    3741{ 
    3842  if (parent) 
     
    136140  SetPvsTerminationNodes(area); 
    137141   
     142  // sets the number of objects in the subtree 
     143  KdNode::NewMail(); 
     144  SetNumObjects(mRoot); 
     145 
    138146  return true; 
    139147} 
     
    10571065void 
    10581066KdTree::CollectKdObjects(const AxisAlignedBox3 &box, 
    1059                         ObjectContainer &objects 
    1060                         ) 
     1067                                                ObjectContainer &objects 
     1068                                                 ) 
    10611069{ 
    10621070  stack<KdNode *> nodeStack; 
     
    11241132void 
    11251133KdTree::CollectObjects(const AxisAlignedBox3 &box, 
    1126                        ObjectContainer &objects) 
     1134                                           ObjectContainer &objects) 
    11271135{ 
    11281136  stack<KdNode *> nodeStack; 
     
    11521160    } 
    11531161  } 
     1162} 
     1163 
     1164 
     1165int KdTree::GetNumObjects(KdNode *node) const 
     1166{ 
     1167        return node->mNumObjects; 
     1168} 
     1169 
     1170 
     1171void KdTree::SetNumObjects(KdNode *node) 
     1172{ 
     1173        node->mNumObjects = 0; 
     1174 
     1175        if (node->IsLeaf())  
     1176        { 
     1177                KdLeaf *leaf = (KdLeaf *)node; 
     1178 
     1179                for (int j=0; j < leaf->mObjects.size(); ++ j)  
     1180                { 
     1181                        Intersectable *object = leaf->mObjects[j]; 
     1182 
     1183                        if (!object->Mailed())  
     1184                        { 
     1185                                object->Mail(); 
     1186                                ++ node->mNumObjects; 
     1187                        } 
     1188                } 
     1189        } 
     1190        else  
     1191        { 
     1192                KdInterior *interior = (KdInterior *)node; 
     1193 
     1194                SetNumObjects(interior->mFront); 
     1195                SetNumObjects(interior->mBack); 
     1196 
     1197                node->mNumObjects += interior->mFront->mNumObjects; 
     1198                node->mNumObjects += interior->mBack->mNumObjects; 
     1199        } 
    11541200} 
    11551201 
     
    16701716        SetPvsTerminationNodes(area); 
    16711717 
     1718        // sets the number of objects in the subtree 
     1719        KdNode::NewMail(); 
     1720        SetNumObjects(mRoot); 
     1721 
    16721722        Debug << mStat << endl; 
    16731723 
Note: See TracChangeset for help on using the changeset viewer.