stt/src/stt_cut_hole.cc
2024-09-10 16:01:52 +08:00

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;
}