| 203 | } |
| 204 | |
| 205 | BOOL LASreader::inside_circle(const F64 center_x, const F64 center_y, const F64 radius) { |
| 206 | inside = 2; |
| 207 | c_center_x = center_x; |
| 208 | c_center_y = center_y; |
| 209 | c_radius = radius; |
| 210 | c_radius_squared = radius * radius; |
| 211 | orig_min_x = header.min_x; |
| 212 | orig_min_y = header.min_y; |
| 213 | orig_max_x = header.max_x; |
| 214 | orig_max_y = header.max_y; |
| 215 | header.min_x = center_x - radius; |
| 216 | header.min_y = center_y - radius; |
| 217 | header.max_x = center_x + radius; |
| 218 | header.max_y = center_y + radius; |
| 219 | if (((orig_min_x > header.max_x) || (orig_min_y > header.max_y) || (orig_max_x < header.min_x) || (orig_max_y < header.min_y))) { |
| 220 | if (filter || transform) { |
| 221 | read_complex = &LASreader::read_point_none; |
| 222 | } else { |
| 223 | read_simple = &LASreader::read_point_none; |
| 224 | } |
| 225 | } else if (filter || transform) { |
| 226 | if (index) { |
| 227 | if (index) index->intersect_circle(center_x, center_y, radius); |
| 228 | read_complex = &LASreader::read_point_inside_circle_indexed; |
| 229 | } else if (copc_index) { |
| 230 | copc_index->intersect_circle(center_x, center_y, radius); |
| 231 | read_complex = &LASreader::read_point_inside_circle_copc_indexed; |
| 232 | } else { |
| 233 | read_complex = &LASreader::read_point_inside_circle; |
| 234 | } |
| 235 | } else { |
| 236 | if (index) { |
| 237 | if (index) index->intersect_circle(center_x, center_y, radius); |
| 238 | read_simple = &LASreader::read_point_inside_circle_indexed; |
| 239 | } else if (copc_index) { |
| 240 | copc_index->intersect_circle(center_x, center_y, radius); |
| 241 | read_simple = &LASreader::read_point_inside_circle_copc_indexed; |
| 242 | } else { |
| 243 | read_simple = &LASreader::read_point_inside_circle; |
| 244 | } |
| 245 | } |
| 246 | return TRUE; |
| 247 | } |
| 248 | |
| 249 | BOOL LASreader::inside_rectangle(const F64 min_x, const F64 min_y, const F64 max_x, const F64 max_y) { |
| 250 | inside = 3; |
no test coverage detected