gtsam_points
Loading...
Searching...
No Matches
voxel_raycaster.hpp
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2026 Kenji Koide (k.koide@aist.go.jp)
3#pragma once
4
5#include <Eigen/Core>
6
7namespace gtsam_points {
8
21public:
23 class Iterator {
24 public:
25 using iterator_category = std::forward_iterator_tag;
26 using value_type = Eigen::Vector3i;
27 using difference_type = std::ptrdiff_t;
28 using pointer = const Eigen::Vector3i*;
29 using reference = Eigen::Vector3i&;
30
31 Iterator(const VoxelRaycaster* traversal, const Eigen::Vector3i& coord);
32
33 const Eigen::Vector3i& operator*() const;
34
35 bool operator!=(const Iterator& other) const;
36
37 Iterator& operator++();
38
39 private:
40 const VoxelRaycaster* traversal;
41 Eigen::Vector3i coord;
42 Eigen::Vector3d t_max;
43 };
44
49 VoxelRaycaster(const Eigen::Vector4d& start, const Eigen::Vector4d& end, double voxel_size);
50
52 Iterator begin() const;
53
55 Iterator end() const;
56
58 const Eigen::Vector3i& start_voxel() const;
59
61 const Eigen::Vector3i& end_voxel() const;
62
63private:
64 Eigen::Vector3i step;
65 Eigen::Vector3i start_coord;
66 Eigen::Vector3i end_coord;
67 Eigen::Vector3d t_delta;
68 Eigen::Vector3d t_max_init;
69};
70
71} // namespace gtsam_points
Iterator for traversing voxel coordinates along the ray.
Definition voxel_raycaster.hpp:23
Raycasting-based voxel traversal algorithm. The iterator traverses voxel coordinates intersected by t...
Definition voxel_raycaster.hpp:20
const Eigen::Vector3i & start_voxel() const
Get the start voxel coordinate.
Iterator end() const
Get the end iterator. (end() == end_coord)
VoxelRaycaster(const Eigen::Vector4d &start, const Eigen::Vector4d &end, double voxel_size)
Constructor.
Iterator begin() const
Get the begin iterator. (begin() == start_coord)
const Eigen::Vector3i & end_voxel() const
Get the end voxel coordinate.