IDS peak ICV v1.1.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
23
38{
39public:
47 explicit ExtrinsicParameters(const PointXYZ& rotation, const PointXYZ& translation);
48
56 PEAK_COMMON_NO_DISCARD PointXYZ GetTranslation() const;
57
65 PEAK_COMMON_NO_DISCARD PointXYZ GetRotation() const;
66
67
75 PEAK_COMMON_NO_DISCARD TransformationMatrix3D GetTransformationMatrix() const;
76
77
78private:
79 friend peak::common::detail::BackendAccessor<ExtrinsicParameters>;
80
81 explicit ExtrinsicParameters(const peak_icv_extrinsic_parameters& extrinsicParameters);
82 explicit operator peak_icv_extrinsic_parameters() const;
83
84 peak_icv_extrinsic_parameters m_extrinsicParameters;
85};
86
87inline ExtrinsicParameters::ExtrinsicParameters(const PointXYZ& rotation, const PointXYZ& translation)
88 : m_extrinsicParameters{ { rotation.GetX(), rotation.GetY(), rotation.GetZ(), {} },
89 { translation.GetX(), translation.GetY(), translation.GetZ(), {} } }
90{}
91
92inline ExtrinsicParameters::ExtrinsicParameters(const peak_icv_extrinsic_parameters& extrinsicParameters)
93 : m_extrinsicParameters{ extrinsicParameters }
94{}
95
97{
98 return peak::common::detail::BackendAccessor<PointXYZ>::CreateInstance(m_extrinsicParameters.translation);
99}
100
102{
103 return peak::common::detail::BackendAccessor<PointXYZ>::CreateInstance(m_extrinsicParameters.rotation);
104}
105
106inline ExtrinsicParameters::operator peak_icv_extrinsic_parameters() const
107{
108 return m_extrinsicParameters;
109}
110
112{
113 peak_icv_transformation_matrix_3d transformationMatrixC{};
115 return PEAK_ICV_C_ABI_PREFIX peak_icv_Calibration_Extrinsic_CalculateTransformationMatrix(
116 m_extrinsicParameters, sizeof(m_extrinsicParameters), &transformationMatrixC);
117 });
118
119 TransformationMatrix3D transformationMatrixCpp;
120 const auto* cArrayBegin = &transformationMatrixC[0][0];
121 const auto* cArrayEnd = (&transformationMatrixC[3][3]) + 1;
122 std::copy(cArrayBegin, cArrayEnd, transformationMatrixCpp.begin());
123
124 return transformationMatrixCpp;
125}
126
127} /* namespace icv */
128} /* 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.
PointXYZ GetRotation() const
Provides the rotation.
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)