MCPcopy Create free account
hub / github.com/LASzip/LASzip / intersect_tile_with_cells_adaptive

Method intersect_tile_with_cells_adaptive

src/lasquadtree.cpp:1156–1240  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1154}
1155
1156void LASquadtree::intersect_tile_with_cells_adaptive(const F32 ll_x, const F32 ll_y, const F32 ur_x, const F32 ur_y, const F32 cell_min_x, const F32 cell_max_x, const F32 cell_min_y, const F32 cell_max_y, U32 level, U32 level_index)
1157{
1158 volatile float cell_mid_x;
1159 volatile float cell_mid_y;
1160 U32 cell_index = get_cell_index(level_index, level);
1161 U32 adaptive_pos = cell_index/32;
1162 U32 adaptive_bit = ((U32)1) << (cell_index%32);
1163 if ((level < levels) && (adaptive[adaptive_pos] & adaptive_bit))
1164 {
1165 level++;
1166 level_index <<= 2;
1167
1168 cell_mid_x = (cell_min_x + cell_max_x)/2;
1169 cell_mid_y = (cell_min_y + cell_max_y)/2;
1170
1171 if (ur_x <= cell_mid_x)
1172 {
1173 // cell_max_x = cell_mid_x;
1174 if (ur_y <= cell_mid_y)
1175 {
1176 // cell_max_y = cell_mid_y;
1177 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_min_x, cell_mid_x, cell_min_y, cell_mid_y, level, level_index);
1178 }
1179 else if (!(ll_y < cell_mid_y))
1180 {
1181 // cell_min_y = cell_mid_y;
1182 // level_index |= 1;
1183 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_min_x, cell_mid_x, cell_mid_y, cell_max_y, level, level_index | 2);
1184 }
1185 else
1186 {
1187 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_min_x, cell_mid_x, cell_min_y, cell_mid_y, level, level_index);
1188 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_min_x, cell_mid_x, cell_mid_y, cell_max_y, level, level_index | 2);
1189 }
1190 }
1191 else if (!(ll_x < cell_mid_x))
1192 {
1193 // cell_min_x = cell_mid_x;
1194 // level_index |= 1;
1195 if (ur_y <= cell_mid_y)
1196 {
1197 // cell_max_y = cell_mid_y;
1198 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_mid_x, cell_max_x, cell_min_y, cell_mid_y, level, level_index | 1);
1199 }
1200 else if (!(ll_y < cell_mid_y))
1201 {
1202 // cell_min_y = cell_mid_y;
1203 // level_index |= 1;
1204 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_mid_x, cell_max_x, cell_mid_y, cell_max_y, level, level_index | 3);
1205 }
1206 else
1207 {
1208 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_mid_x, cell_max_x, cell_min_y, cell_mid_y, level, level_index | 1);
1209 intersect_tile_with_cells_adaptive(ll_x, ll_y, ur_x, ur_y, cell_mid_x, cell_max_x, cell_mid_y, cell_max_y, level, level_index | 3);
1210 }
1211 }
1212 else
1213 {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected