26 private readonly Backend.Types.peak_icv_extrinsic_parameters _extrinsicParameters;
40 _extrinsicParameters =
new Backend.Types.peak_icv_extrinsic_parameters
42 rotation =
new Backend.Types.peak_icv_point_xyz
48 translation =
new Backend.Types.peak_icv_point_xyz
60 internal ExtrinsicParameters(Backend.Types.peak_icv_extrinsic_parameters extrinsicParameters)
62 _extrinsicParameters = extrinsicParameters;
63 Translation =
new PointXYZ(extrinsicParameters.translation.x, extrinsicParameters.translation.y,
64 extrinsicParameters.translation.z);
65 Rotation =
new PointXYZ(extrinsicParameters.rotation.x, extrinsicParameters.rotation.y,
66 extrinsicParameters.rotation.z);
89 var matrixC =
new float[16];
90 DllHelper.ExecuteAndMapReturnCodes(() =>
91 CInterface.peak_icv_Calibration_Extrinsic_CalculateTransformationMatrix(
92 _extrinsicParameters, (nuint) Marshal.SizeOf<Backend.Types.peak_icv_extrinsic_parameters>(),
103 public static IEqualityComparer<ExtrinsicParameters>
Comparer {
get; } =
104 new ExtrinsicParametersEqualityComparer();
112 return $
"Translation: ({Translation}), " +
113 $
"Rotation: ({Rotation})";
119 internal Backend.Types.peak_icv_extrinsic_parameters ToCType()
121 return _extrinsicParameters;
124 private sealed class ExtrinsicParametersEqualityComparer : IEqualityComparer<ExtrinsicParameters>
128 if (ReferenceEquals(x, y))
return true;
129 if (ReferenceEquals(x,
null))
return false;
130 if (ReferenceEquals(y,
null))
return false;
132 return x._extrinsicParameters.Equals(y._extrinsicParameters);
137 return obj._extrinsicParameters.GetHashCode();
141 private static class CInterface
143 [DllImport(Global.LibraryName, CallingConvention = Global.CallingConvention)]
144 public static extern Backend.Types.peak_icv_status
145 peak_icv_Calibration_Extrinsic_CalculateTransformationMatrix(
146 Backend.Types.peak_icv_extrinsic_parameters extrinsicParams,
147 nuint extrinsicParamsSize,
148 float[] transformationMatrix);