void BinarySeachTree::RenderBSPTree(BSPTreeNode* root, scene::ICameraSceneNodePtr camera) { if(JudgeIntersection(camera, root)&&(root != NULL)) { if(root->treeheight == THeight+1) //9 { std::cout<<"-----------------------render---------------------------"<<std::endl; std::cout<<"treeheight:"<<root->treeheight<<std::endl; std::cout<<"size:"<<(root->nodes.size())<<std::endl; for(scene::SSceneNodeArray::iterator iter = root->nodes.begin(); iter != root->nodes.end(); ++iter) { (*iter)->setVisible(true); } std::cout<<"end"<<std::endl; } std::cout<<"--------------------------------------------------"<<std::endl; std::cout<<"treeheight:"<<root->treeheight<<std::endl; std::cout<<"Left"<<std::endl; RenderBSPTree(root->lchild, camera); std::cout<<"--------------------------------------------------"<<std::endl; std::cout<<"treeheight:"<<root->treeheight<<std::endl; std::cout<<"Right"<<std::endl; RenderBSPTree(root->rchild, camera); } }
void Partition::FindPartitionFace(SFace* Fa, SFace* Fb) { //比较两个面是否有相邻curve_edge, 如果有那么就判断两面是否是分割面 否则continue for(auto i = Fa->faceBounds_.begin(); i != Fa->faceBounds_.end(); i++) { for(auto ia = ((*i)->edgeLoop_).begin(); ia != ((*i)->edgeLoop_).end(); ia++) { size_t curveFaceAId = (*ia)->edgeCurveId_; for(auto j = Fb->faceBounds_.begin(); j != Fb->faceBounds_.end(); j++) { for(auto jb = ((*j)->edgeLoop_).begin(); jb != ((*j)->edgeLoop_).end(); jb++) { size_t curveFaceBId = (*jb)->edgeCurveId_; orientationFaceA oriA; oriA.advancedFaceOri = Fa->adFaceSameSense_; oriA.boundsOri = (*i)->boundsOri_; oriA.orientedEdgeOri = (*ia)->orientedEdgeOri_; oriA.edgeCurveOri = (*ia)->edgeCurvesameSense_; char* curveName = (*ia)->curveName_; EdgeCurveVertex curveA, curveB; curveA.cartesianStart = (*ia)->edgeStart_; curveA.cartesianEnd = (*ia)->edgeEnd_; curveA.cartesianStart = (*jb)->edgeStart_; curveA.cartesianEnd = (*jb)->edgeEnd_; CPoint3D pointA = ((CIRCLE*)(*ia))->position_.point;//圆心 if(curveFaceBId == curveFaceAId) { //判断是否是分割面 bool isPartitionFace = JudgeIntersection(Fa, Fb, curveName, oriA, curveA, curveB, pointA); if(isPartitionFace) { pair<size_t, SFace*> pa(Fa->entityID_, Fa); pair<size_t, SFace*> pb(Fb->entityID_, Fb); partitionFaceList_.insert(pa); partitionFaceList_.insert(pb); } else continue; } } } } } }