26 lines
852 B
C++
26 lines
852 B
C++
#include "stt_class.h"
|
|
|
|
void SttGenerator::CutHole(QuadTreeNode** p_tree){
|
|
//切割范围多边形之外的四叉树节点 从深到浅执行
|
|
QuadTreeNode* current_node = *p_tree;
|
|
//当前节点是叶子节点 进行判断
|
|
if (current_node->children[0]==nullptr && current_node->children[1]==nullptr &&
|
|
current_node->children[2]==nullptr && current_node->children[3]==nullptr){
|
|
//如果节点三角形在范围多边形之外 删除节点三角形 同时初始化指针
|
|
if (InPolyOutline(current_node)){
|
|
current_node->out_ok = false;
|
|
return;
|
|
}
|
|
else return;
|
|
}
|
|
else{
|
|
for (int i = 0; i < 4; i++){
|
|
//顺序访问当前节点的四个子节点 先处理子节点的情况 当然前提是节点存在
|
|
if (current_node->children[i] != nullptr){
|
|
CutHole(&(current_node->children[i]));
|
|
}
|
|
else continue;
|
|
}
|
|
}
|
|
return;
|
|
} |