MCPcopy Create free account
hub / github.com/Robotics-STAR-Lab/SOAR / Update

Method Update

src/simulator/local_sensing/include/ikd-Tree/ikd_Tree.cpp:1110–1245  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1108}
1109
1110void KD_TREE::Update(KD_TREE_NODE * root){
1111 KD_TREE_NODE * left_son_ptr = root->left_son_ptr;
1112 KD_TREE_NODE * right_son_ptr = root->right_son_ptr;
1113 float tmp_range_x[2] = {INFINITY, -INFINITY};
1114 float tmp_range_y[2] = {INFINITY, -INFINITY};
1115 float tmp_range_z[2] = {INFINITY, -INFINITY};
1116 // Update Tree Size
1117 if (left_son_ptr != nullptr && right_son_ptr != nullptr){
1118 root->TreeSize = left_son_ptr->TreeSize + right_son_ptr->TreeSize + 1;
1119 root->invalid_point_num = left_son_ptr->invalid_point_num + right_son_ptr->invalid_point_num + (root->point_deleted? 1:0);
1120 root->down_del_num = left_son_ptr->down_del_num + right_son_ptr->down_del_num + (root->point_downsample_deleted? 1:0);
1121 root->tree_downsample_deleted = left_son_ptr->tree_downsample_deleted & right_son_ptr->tree_downsample_deleted & root->point_downsample_deleted;
1122 root->tree_deleted = left_son_ptr->tree_deleted && right_son_ptr->tree_deleted && root->point_deleted;
1123 if (root->tree_deleted || (!left_son_ptr->tree_deleted && !right_son_ptr->tree_deleted && !root->point_deleted)){
1124 tmp_range_x[0] = min(min(left_son_ptr->node_range_x[0],right_son_ptr->node_range_x[0]),root->point.x);
1125 tmp_range_x[1] = max(max(left_son_ptr->node_range_x[1],right_son_ptr->node_range_x[1]),root->point.x);
1126 tmp_range_y[0] = min(min(left_son_ptr->node_range_y[0],right_son_ptr->node_range_y[0]),root->point.y);
1127 tmp_range_y[1] = max(max(left_son_ptr->node_range_y[1],right_son_ptr->node_range_y[1]),root->point.y);
1128 tmp_range_z[0] = min(min(left_son_ptr->node_range_z[0],right_son_ptr->node_range_z[0]),root->point.z);
1129 tmp_range_z[1] = max(max(left_son_ptr->node_range_z[1],right_son_ptr->node_range_z[1]),root->point.z);
1130 } else {
1131 if (!left_son_ptr->tree_deleted){
1132 tmp_range_x[0] = min(tmp_range_x[0], left_son_ptr->node_range_x[0]);
1133 tmp_range_x[1] = max(tmp_range_x[1], left_son_ptr->node_range_x[1]);
1134 tmp_range_y[0] = min(tmp_range_y[0], left_son_ptr->node_range_y[0]);
1135 tmp_range_y[1] = max(tmp_range_y[1], left_son_ptr->node_range_y[1]);
1136 tmp_range_z[0] = min(tmp_range_z[0], left_son_ptr->node_range_z[0]);
1137 tmp_range_z[1] = max(tmp_range_z[1], left_son_ptr->node_range_z[1]);
1138 }
1139 if (!right_son_ptr->tree_deleted){
1140 tmp_range_x[0] = min(tmp_range_x[0], right_son_ptr->node_range_x[0]);
1141 tmp_range_x[1] = max(tmp_range_x[1], right_son_ptr->node_range_x[1]);
1142 tmp_range_y[0] = min(tmp_range_y[0], right_son_ptr->node_range_y[0]);
1143 tmp_range_y[1] = max(tmp_range_y[1], right_son_ptr->node_range_y[1]);
1144 tmp_range_z[0] = min(tmp_range_z[0], right_son_ptr->node_range_z[0]);
1145 tmp_range_z[1] = max(tmp_range_z[1], right_son_ptr->node_range_z[1]);
1146 }
1147 if (!root->point_deleted){
1148 tmp_range_x[0] = min(tmp_range_x[0], root->point.x);
1149 tmp_range_x[1] = max(tmp_range_x[1], root->point.x);
1150 tmp_range_y[0] = min(tmp_range_y[0], root->point.y);
1151 tmp_range_y[1] = max(tmp_range_y[1], root->point.y);
1152 tmp_range_z[0] = min(tmp_range_z[0], root->point.z);
1153 tmp_range_z[1] = max(tmp_range_z[1], root->point.z);
1154 }
1155 }
1156 } else if (left_son_ptr != nullptr){
1157 root->TreeSize = left_son_ptr->TreeSize + 1;
1158 root->invalid_point_num = left_son_ptr->invalid_point_num + (root->point_deleted?1:0);
1159 root->down_del_num = left_son_ptr->down_del_num + (root->point_downsample_deleted?1:0);
1160 root->tree_downsample_deleted = left_son_ptr->tree_downsample_deleted & root->point_downsample_deleted;
1161 root->tree_deleted = left_son_ptr->tree_deleted && root->point_deleted;
1162 if (root->tree_deleted || (!left_son_ptr->tree_deleted && !root->point_deleted)){
1163 tmp_range_x[0] = min(left_son_ptr->node_range_x[0],root->point.x);
1164 tmp_range_x[1] = max(left_son_ptr->node_range_x[1],root->point.x);
1165 tmp_range_y[0] = min(left_son_ptr->node_range_y[0],root->point.y);
1166 tmp_range_y[1] = max(left_son_ptr->node_range_y[1],root->point.y);
1167 tmp_range_z[0] = min(left_son_ptr->node_range_z[0],root->point.z);

Callers

nothing calls this directly

Calls 2

minFunction · 0.50
maxFunction · 0.50

Tested by

no test coverage detected