6 const sensor_msgs::msg::PointCloud2::SharedPtr& cloud,
7 sensor_msgs::msg::PointCloud2::SharedPtr& trimmed_cloud)
const {
9 trimmed_cloud->header = cloud->header;
10 trimmed_cloud->height = 1;
11 trimmed_cloud->is_dense =
false;
12 trimmed_cloud->fields = cloud->fields;
13 trimmed_cloud->point_step = cloud->point_step;
14 trimmed_cloud->width = 0;
15 trimmed_cloud->row_step = 0;
16 trimmed_cloud->data.resize(cloud->data.size());
18 const auto& data = cloud->data;
19 const size_t n = cloud->width * cloud->height;
27 cos_t = std::cos(theta);
28 sin_t = std::sin(theta);
34 for (
size_t i = 0; i < n; ++i) {
40 if (x == 0.0f && y == 0.0f && z == 0.0f) {
48 rx =
static_cast<float>(x * cos_t - y * sin_t);
49 ry =
static_cast<float>(x * sin_t + y * cos_t);
64 trimmed_cloud->width++;
bool within_limits(float x, float y, float z, float intensity, const TrimmingParameters ¶ms, const double max_range) const