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

Method setup

src/lasquadtree.cpp:1518–1567  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1516}
1517
1518BOOL LASquadtree::setup(F64 bb_min_x, F64 bb_max_x, F64 bb_min_y, F64 bb_max_y, F32 cell_size)
1519{
1520 this->cell_size = cell_size;
1521 this->sub_level = 0;
1522 this->sub_level_index = 0;
1523
1524 // enlarge bounding box to units of cells
1525 if (bb_min_x >= 0) min_x = cell_size*((I32)(bb_min_x/cell_size));
1526 else min_x = cell_size*((I32)(bb_min_x/cell_size)-1);
1527 if (bb_max_x >= 0) max_x = cell_size*((I32)(bb_max_x/cell_size)+1);
1528 else max_x = cell_size*((I32)(bb_max_x/cell_size));
1529 if (bb_min_y >= 0) min_y = cell_size*((I32)(bb_min_y/cell_size));
1530 else min_y = cell_size*((I32)(bb_min_y/cell_size)-1);
1531 if (bb_max_y >= 0) max_y = cell_size*((I32)(bb_max_y/cell_size)+1);
1532 else max_y = cell_size*((I32)(bb_max_y/cell_size));
1533
1534 // how many cells minimally in each direction
1535 cells_x = U32_QUANTIZE((max_x - min_x)/cell_size);
1536 cells_y = U32_QUANTIZE((max_y - min_y)/cell_size);
1537
1538 if (cells_x == 0 || cells_y == 0)
1539 {
1540 laserror("cells_x %d cells_y %d", cells_x, cells_y);
1541 return FALSE;
1542 }
1543
1544 // how many quad tree levels to get to that many cells
1545 U32 c = ((cells_x > cells_y) ? cells_x - 1 : cells_y - 1);
1546 levels = 0;
1547 while (c)
1548 {
1549 c = c >> 1;
1550 levels++;
1551 }
1552
1553 // enlarge bounding box to quad tree size
1554 U32 c1, c2;
1555 c = (1 << levels) - cells_x;
1556 c1 = c/2;
1557 c2 = c - c1;
1558 min_x -= (c2 * cell_size);
1559 max_x += (c1 * cell_size);
1560 c = (1 << levels) - cells_y;
1561 c1 = c/2;
1562 c2 = c - c1;
1563 min_y -= (c2 * cell_size);
1564 max_y += (c1 * cell_size);
1565
1566 return TRUE;
1567}
1568
1569BOOL LASquadtree::setup(F64 bb_min_x, F64 bb_max_x, F64 bb_min_y, F64 bb_max_y, F32 cell_size, F32 offset_x, F32 offset_y)
1570{

Callers

nothing calls this directly

Calls 1

laserrorFunction · 0.85

Tested by

no test coverage detected