IDS peak ICV v1.0.0
Loading...
Searching...
No Matches
peak_icv_extrinsic_parameters.hpp
Go to the documentation of this file.
1
11#pragma once
12
16#include <peak_icv_c/algorithms/calibration/peak_icv_extrinsic_parameters.h>
17
18namespace peak
19{
20namespace icv
21{
22
23namespace experimental
24{
25
40{
41public:
49 explicit ExtrinsicParameters(const PointXYZ& rotation, const PointXYZ& translation);
50
58 PEAK_ICV_NO_DISCARD PointXYZ GetTranslation() const;
59
67 PEAK_ICV_NO_DISCARD PointXYZ GetRotation() const;
68
69
77 PEAK_ICV_NO_DISCARD TransformationMatrix3D GetTransformationMatrix() const;
78
79
80private:
81 friend peak::common::detail::BackendAccessor<ExtrinsicParameters>;
82
83 explicit ExtrinsicParameters(const peak_icv_extrinsic_parameters& extrinsicParameters);
84 explicit operator peak_icv_extrinsic_parameters() const;
85
86 peak_icv_extrinsic_parameters m_extrinsicParameters;
87};
88
89inline ExtrinsicParameters::ExtrinsicParameters(const PointXYZ& rotation, const PointXYZ& translation)
90 : m_extrinsicParameters{ { rotation.GetX(), rotation.GetY(), rotation.GetZ(), {} },
91 { translation.GetX(), translation.GetY(), translation.GetZ(), {} } }
92{}
93
94inline ExtrinsicParameters::ExtrinsicParameters(const peak_icv_extrinsic_parameters& extrinsicParameters)
95 : m_extrinsicParameters{ extrinsicParameters }
96{}
97
99{
100 return peak::common::detail::BackendAccessor<PointXYZ>::CreateInstance(m_extrinsicParameters.translation);
101}
102
104{
105 return peak::common::detail::BackendAccessor<PointXYZ>::CreateInstance(m_extrinsicParameters.rotation);
106}
107
108inline ExtrinsicParameters::operator peak_icv_extrinsic_parameters() const
109{
110 return m_extrinsicParameters;
111}
112
114{
115 peak_icv_transformation_matrix_3d transformationMatrixC{};
117 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Extrinsic_CalculateTransformationMatrix(
118 m_extrinsicParameters, sizeof(m_extrinsicParameters), &transformationMatrixC);
119 });
120
121 TransformationMatrix3D transformationMatrixCpp;
122 const auto* cArrayBegin = &transformationMatrixC[0][0];
123 const auto* cArrayEnd = (&transformationMatrixC[3][3]) + 1;
124 std::copy(cArrayBegin, cArrayEnd, transformationMatrixCpp.begin());
125
126 return transformationMatrixCpp;
127}
128} /* namespace experimental */
129
130} /* namespace icv */
131} /* namespace peak */
constexpr T GetY() const
Returns the y-coordinate (second component).
constexpr T GetX() const
Returns the x-coordinate (first component).
This class stores and provides access to the extrinsic parameters, which include the translation,...
TransformationMatrix3D GetTransformationMatrix() const
Calculates the transformation matrix based on rotation and translation.
PointXYZ GetTranslation() const
Provides the translation.
ExtrinsicParameters(const PointXYZ &rotation, const PointXYZ &translation)
Constructs ExtrinsicParameters from a rotation and a translation vector.
A point consists of x, y and z coordinate.
float GetZ() const
Returns the z coordinate.
A transformation matrix is a square matrix that, when multiplied by the coordinates of a geometric ob...
void ExecuteAndMapReturnCodes(const CallableType &callableObject)