Skip to content

Commit bbac781

Browse files
committed
small optimization to logic
1 parent ad1492f commit bbac781

1 file changed

Lines changed: 23 additions & 57 deletions

File tree

filters/include/pcl/filters/impl/voxel_grid.hpp

Lines changed: 23 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -274,30 +274,19 @@ pcl::getMinMax3D (const pcl::PCLPointCloud2ConstPtr &cloud, int x_idx, int y_idx
274274
{
275275
std::memcpy(&distance_value, data_ptr + distance_off, sizeof(D));
276276

277-
if (limit_negative)
277+
if (limit_negative == (distance_value < max_distance && distance_value > min_distance))
278278
{
279-
if ((distance_value < max_distance) && (distance_value > min_distance))
280-
{
281-
data_ptr += pt_step;
282-
continue;
283-
}
284-
}
285-
else
286-
{
287-
if ((distance_value > max_distance) || (distance_value < min_distance))
288-
{
289-
data_ptr += pt_step;
290-
continue;
291-
}
279+
data_ptr += pt_step;
280+
continue;
292281
}
293282

294-
std::memcpy(&x, data_ptr + x_off, sizeof(T));
295-
std::memcpy(&y, data_ptr + y_off, sizeof(T));
296-
std::memcpy(&z, data_ptr + z_off, sizeof(T));
283+
std::memcpy(&x, data_ptr + x_off, sizeof(T));
284+
std::memcpy(&y, data_ptr + y_off, sizeof(T));
285+
std::memcpy(&z, data_ptr + z_off, sizeof(T));
297286

298-
data_ptr += pt_step;
287+
data_ptr += pt_step;
299288

300-
update_min_max(x, y, z);
289+
update_min_max(x, y, z);
301290
}
302291
}
303292
else
@@ -306,34 +295,23 @@ pcl::getMinMax3D (const pcl::PCLPointCloud2ConstPtr &cloud, int x_idx, int y_idx
306295
{
307296
std::memcpy(&distance_value, data_ptr + distance_off, sizeof(D));
308297

309-
if (limit_negative)
310-
{
311-
if ((distance_value < max_distance) && (distance_value > min_distance))
312-
{
313-
data_ptr += pt_step;
314-
continue;
315-
}
316-
}
317-
else
298+
if (limit_negative == (distance_value < max_distance && distance_value > min_distance))
318299
{
319-
if ((distance_value > max_distance) || (distance_value < min_distance))
320-
{
321-
data_ptr += pt_step;
322-
continue;
323-
}
300+
data_ptr += pt_step;
301+
continue;
324302
}
325303

326-
std::memcpy(&x, data_ptr + x_off, sizeof(T));
327-
std::memcpy(&y, data_ptr + y_off, sizeof(T));
328-
std::memcpy(&z, data_ptr + z_off, sizeof(T));
304+
std::memcpy(&x, data_ptr + x_off, sizeof(T));
305+
std::memcpy(&y, data_ptr + y_off, sizeof(T));
306+
std::memcpy(&z, data_ptr + z_off, sizeof(T));
329307

330-
data_ptr += pt_step;
308+
data_ptr += pt_step;
331309

332-
// Check if the point is invalid
333-
if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(z))
334-
continue;
310+
// Check if the point is invalid
311+
if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(z))
312+
continue;
335313

336-
update_min_max(x, y, z);
314+
update_min_max(x, y, z);
337315
}
338316
}
339317

@@ -410,15 +388,9 @@ pcl::getMinMax3D (const pcl::PCLPointCloud2ConstPtr &cloud, const pcl::Indices &
410388

411389
std::memcpy(&distance_value, pt_data + distance_off, sizeof(D));
412390

413-
if (limit_negative)
391+
if (limit_negative == (distance_value < max_distance && distance_value > min_distance))
414392
{
415-
if ((distance_value < max_distance) && (distance_value > min_distance))
416-
continue;
417-
}
418-
else
419-
{
420-
if ((distance_value > max_distance) || (distance_value < min_distance))
421-
continue;
393+
continue;
422394
}
423395

424396
std::memcpy(&x, pt_data + x_off, sizeof(T));
@@ -436,15 +408,9 @@ pcl::getMinMax3D (const pcl::PCLPointCloud2ConstPtr &cloud, const pcl::Indices &
436408

437409
std::memcpy(&distance_value, pt_data + distance_off, sizeof(D));
438410

439-
if (limit_negative)
411+
if (limit_negative == (distance_value < max_distance && distance_value > min_distance))
440412
{
441-
if ((distance_value < max_distance) && (distance_value > min_distance))
442-
continue;
443-
}
444-
else
445-
{
446-
if ((distance_value > max_distance) || (distance_value < min_distance))
447-
continue;
413+
continue;
448414
}
449415

450416
std::memcpy(&x, pt_data + x_off, sizeof(T));

0 commit comments

Comments
 (0)