MCPcopy Create free account
hub / github.com/LAStools/LAStools / filter

Method filter

LASlib/src/lasfilter.cpp:1766–1891  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1764 inline const CHAR* name() const { return "thin_with_grid"; };
1765 inline I32 get_command(CHAR* string) const { return sprintf(string, "-%s %g ", name(), (grid_spacing > 0 ? grid_spacing : -grid_spacing)); };
1766 inline BOOL filter(const LASpoint* point)
1767 {
1768 if (grid_spacing < 0)
1769 {
1770 grid_spacing = -grid_spacing;
1771 anker = I32_FLOOR(point->get_y() / grid_spacing);
1772 }
1773 I32 pos_x = I32_FLOOR(point->get_x() / grid_spacing);
1774 I32 pos_y = I32_FLOOR(point->get_y() / grid_spacing) - anker;
1775 BOOL no_x_anker = FALSE;
1776 U32* array_size;
1777 I32** ankers;
1778 U32*** array;
1779 U16** array_sizes;
1780 if (pos_y < 0)
1781 {
1782 pos_y = -pos_y - 1;
1783 ankers = &minus_ankers;
1784 if ((U32)pos_y < minus_plus_size && minus_plus_sizes[pos_y])
1785 {
1786 pos_x -= minus_ankers[pos_y];
1787 if (pos_x < 0)
1788 {
1789 pos_x = -pos_x - 1;
1790 array_size = &minus_minus_size;
1791 array = &minus_minus;
1792 array_sizes = &minus_minus_sizes;
1793 }
1794 else
1795 {
1796 array_size = &minus_plus_size;
1797 array = &minus_plus;
1798 array_sizes = &minus_plus_sizes;
1799 }
1800 }
1801 else
1802 {
1803 no_x_anker = TRUE;
1804 array_size = &minus_plus_size;
1805 array = &minus_plus;
1806 array_sizes = &minus_plus_sizes;
1807 }
1808 }
1809 else
1810 {
1811 ankers = &plus_ankers;
1812 if ((U32)pos_y < plus_plus_size && plus_plus_sizes[pos_y])
1813 {
1814 pos_x -= plus_ankers[pos_y];
1815 if (pos_x < 0)
1816 {
1817 pos_x = -pos_x - 1;
1818 array_size = &plus_minus_size;
1819 array = &plus_minus;
1820 array_sizes = &plus_minus_sizes;
1821 }
1822 else
1823 {

Callers

nothing calls this directly

Calls 2

realloc_lasFunction · 0.85
malloc_lasFunction · 0.85

Tested by

no test coverage detected