Changeset 2705 for GTP/trunk/Lib/Vis/Preprocessing/src/KdTree.cpp
- Timestamp:
- 05/24/08 11:59:35 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/KdTree.cpp
r2691 r2705 34 34 35 35 KdNode::KdNode(KdInterior *parent): 36 mParent(parent), mMailbox(0), mIntersectable(NULL), mMailbox2(0) 36 mParent(parent), 37 mMailbox(0), 38 mIntersectable(NULL), 39 mMailbox2(0), 40 mNumObjects(0) 37 41 { 38 42 if (parent) … … 136 140 SetPvsTerminationNodes(area); 137 141 142 // sets the number of objects in the subtree 143 KdNode::NewMail(); 144 SetNumObjects(mRoot); 145 138 146 return true; 139 147 } … … 1057 1065 void 1058 1066 KdTree::CollectKdObjects(const AxisAlignedBox3 &box, 1059 ObjectContainer &objects1060 )1067 ObjectContainer &objects 1068 ) 1061 1069 { 1062 1070 stack<KdNode *> nodeStack; … … 1124 1132 void 1125 1133 KdTree::CollectObjects(const AxisAlignedBox3 &box, 1126 1134 ObjectContainer &objects) 1127 1135 { 1128 1136 stack<KdNode *> nodeStack; … … 1152 1160 } 1153 1161 } 1162 } 1163 1164 1165 int KdTree::GetNumObjects(KdNode *node) const 1166 { 1167 return node->mNumObjects; 1168 } 1169 1170 1171 void 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 } 1154 1200 } 1155 1201 … … 1670 1716 SetPvsTerminationNodes(area); 1671 1717 1718 // sets the number of objects in the subtree 1719 KdNode::NewMail(); 1720 SetNumObjects(mRoot); 1721 1672 1722 Debug << mStat << endl; 1673 1723
Note: See TracChangeset
for help on using the changeset viewer.