3 #include "components_pointers_3d.hpp" 79 return components_.
XInc();
89 return components_.
YInc();
99 return components_.
ZInc();
109 return components_.
WInc();
131 return InternalPointAt(indexX, indexY, TypeTag<T>{});
143 return InternalSetPointAt(indexX, indexY, point);
159 : components_(components)
160 , latticeSize_(latticeSize)
167 template <
class TYPE>
168 Point3DC<TYPE> InternalPointAt(
std::size_t indexX,
std::size_t indexY, TypeTag<Point3DC<TYPE>>) const noexcept
170 auto x = *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc());
171 auto y = *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc());
172 auto z = *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc());
174 return Point3DC<TYPE>(x, y, z, c);
177 template <
class TYPE>
178 Point3DH<TYPE> InternalPointAt(
std::size_t indexX,
std::size_t indexY, TypeTag<Point3DH<TYPE>>) const noexcept
180 auto x = *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc());
181 auto y = *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc());
182 auto z = *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc());
183 auto w = *reinterpret_cast<TYPE*>(
BasePtrW() + indexY * latticeSize_.
Width() *
WInc() + indexX *
WInc());
184 return Point3DH<TYPE>(x, y, z, w);
187 template <
class TYPE>
188 Point3D<TYPE> InternalPointAt(
std::size_t indexX,
std::size_t indexY, TypeTag<Point3D<TYPE>>) const noexcept
190 auto x = *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc());
191 auto y = *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc());
192 auto z = *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc());
193 return Point3D<TYPE>(x, y, z);
196 template <
class TYPE>
199 *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc()) = point.X();
200 *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc()) = point.Y();
201 *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc()) = point.Z();
205 template <
class TYPE>
208 *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc()) = point.X();
209 *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc()) = point.Y();
210 *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc()) = point.Z();
211 *reinterpret_cast<TYPE*>(
BasePtrW() + indexY * latticeSize_.
Width() *
WInc() + indexX *
WInc()) = point.W();
214 template <
class TYPE>
217 *reinterpret_cast<TYPE*>(
BasePtrX() + indexY * latticeSize_.
Width() *
XInc() + indexX *
XInc()) = point.X();
218 *reinterpret_cast<TYPE*>(
BasePtrY() + indexY * latticeSize_.
Width() *
YInc() + indexX *
YInc()) = point.Y();
219 *reinterpret_cast<TYPE*>(
BasePtrZ() + indexY * latticeSize_.
Width() *
ZInc() + indexX *
ZInc()) = point.Z();
222 ComponentsPointers3D components_;
223 Size2D<int> latticeSize_;
std::uintptr_t BasePtrZ() const noexcept
Variable to receive the pointer to the first Z-component of the first point.
Definition: components_pointers_3d.hpp:52
std::uintptr_t BasePtrY() const noexcept
Variable to receive the pointer to the first Y-component of the first point.
Definition: components_pointers_3d.hpp:42
std::intptr_t XInc() const noexcept
Increment to the next X-component of the next point in bytes.
Definition: components_pointers_3d.hpp:82
std::intptr_t ZInc() const noexcept
Increment to the next Z-component of the next point in bytes.
Definition: dense_components_pointers_3d.hpp:97
std::uintptr_t BasePtrX() const noexcept
Variable to receive the pointer to the first X-component of the first point.
Definition: dense_components_pointers_3d.hpp:27
std::intptr_t YInc() const noexcept
Increment to the next Y-component of the next point in bytes.
Definition: dense_components_pointers_3d.hpp:87
Size2D< int > LatticeSize() const noexcept
Gets the number of x,y,z(,w) point rows and columns of the PointCloud these components refer to.
Definition: dense_components_pointers_3d.hpp:151
Point components of a dense point cloud.
Definition: dense_components_pointers_3d.hpp:14
std::intptr_t WInc() const noexcept
Increment to the next W-component of the next point in bytes (if present; nullptr if not).
Definition: components_pointers_3d.hpp:112
std::uintptr_t BasePtrZ() const noexcept
Variable to receive the pointer to the first Z-component of the first point.
Definition: dense_components_pointers_3d.hpp:47
void SetPointAt(std::size_t indexX, std::size_t indexY, T point) noexcept
Sets the point at the specified index.
Definition: dense_components_pointers_3d.hpp:141
std::uintptr_t BasePtrConfidence() const noexcept
Variable to receive the pointer to the first confidence-component of the first point.
Definition: components_pointers_3d.hpp:72
std::intptr_t WInc() const noexcept
Increment to the next W-component of the next point in bytes (if present; nullptr if not).
Definition: dense_components_pointers_3d.hpp:107
std::intptr_t XInc() const noexcept
Increment to the next X-component of the next point in bytes.
Definition: dense_components_pointers_3d.hpp:77
std::uintptr_t BasePtrConfidence() const noexcept
Variable to receive the pointer to the first confidence-component of the first point.
Definition: dense_components_pointers_3d.hpp:67
std::uintptr_t BasePtrW() const noexcept
Variable to receive the pointer to the first W-component of the first point.
Definition: components_pointers_3d.hpp:62
Root namespace for the Image Manager interface.
Definition: version.hpp:11
std::intptr_t ConfidenceInc() const noexcept
Increment to the next confidence-component of the next point in bytes (if present; nullptr if not).
Definition: components_pointers_3d.hpp:122
std::uintptr_t BasePtrX() const noexcept
Variable to receive the pointer to the first X-component of the first point.
Definition: components_pointers_3d.hpp:32
T PointAt(std::size_t indexX, std::size_t indexY) const noexcept
Gets the point at the specified index.
Definition: dense_components_pointers_3d.hpp:129
std::intptr_t ZInc() const noexcept
Increment to the next Z-component of the next point in bytes.
Definition: components_pointers_3d.hpp:102
Point components of the point cloud.
Definition: components_pointers_3d.hpp:18
std::intptr_t ConfidenceInc() const noexcept
Increment to the next confidence-component of the next point in bytes (if present; nullptr if not).
Definition: dense_components_pointers_3d.hpp:117
std::uintptr_t BasePtrY() const noexcept
Variable to receive the pointer to the first Y-component of the first point.
Definition: dense_components_pointers_3d.hpp:37
std::intptr_t YInc() const noexcept
Increment to the next Y-component of the next point in bytes.
Definition: components_pointers_3d.hpp:92
std::uintptr_t BasePtrW() const noexcept
Variable to receive the pointer to the first W-component of the first point.
Definition: dense_components_pointers_3d.hpp:57
T Width() const noexcept
Gets the horizontal component of the size.
Definition: size_2d.hpp:59
A dense Cartesian 3D point cloud object.
Definition: decl_dense_point_cloud.hpp:29