IDS peak ICV v1.3.0
Loading...
Searching...
No Matches
ExtrinsicParameters.cs
Go to the documentation of this file.
1using System.Runtime.InteropServices;
4
6
25{
26 private readonly Backend.Types.peak_icv_extrinsic_parameters _extrinsicParameters;
27
38 public ExtrinsicParameters(PointXYZ rotation, PointXYZ translation)
39 {
40 _extrinsicParameters = new Backend.Types.peak_icv_extrinsic_parameters
41 {
42 rotation = new Backend.Types.peak_icv_point_xyz
43 {
44 x = rotation.X,
45 y = rotation.Y,
46 z = rotation.Z
47 },
48 translation = new Backend.Types.peak_icv_point_xyz
49 {
50 x = translation.X,
51 y = translation.Y,
52 z = translation.Z
53 }
54 };
55
56 Translation = translation;
57 Rotation = rotation;
58 }
59
60 internal ExtrinsicParameters(Backend.Types.peak_icv_extrinsic_parameters extrinsicParameters)
61 {
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);
67 }
68
73 public PointXYZ Rotation { get; }
74
79 public PointXYZ Translation { get; }
80
86 {
87 get
88 {
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>(),
93 matrixC));
94
95 return new TransformationMatrix3D(matrixC);
96 }
97 }
98
103 public static IEqualityComparer<ExtrinsicParameters> Comparer { get; } =
104 new ExtrinsicParametersEqualityComparer();
105
110 public override string ToString()
111 {
112 return $"Translation: ({Translation}), " +
113 $"Rotation: ({Rotation})";
114 }
115
119 internal Backend.Types.peak_icv_extrinsic_parameters ToCType()
120 {
121 return _extrinsicParameters;
122 }
123
124 private sealed class ExtrinsicParametersEqualityComparer : IEqualityComparer<ExtrinsicParameters>
125 {
126 public bool Equals(ExtrinsicParameters x, ExtrinsicParameters y)
127 {
128 if (ReferenceEquals(x, y)) return true;
129 if (ReferenceEquals(x, null)) return false;
130 if (ReferenceEquals(y, null)) return false;
131
132 return x._extrinsicParameters.Equals(y._extrinsicParameters);
133 }
134
135 public int GetHashCode(ExtrinsicParameters obj)
136 {
137 return obj._extrinsicParameters.GetHashCode();
138 }
139 }
140
141 private static class CInterface
142 {
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);
149 }
150}
Represents the extrinsic parameters for camera calibration, including rotation, translation and the t...
TransformationMatrix3D TransformationMatrix
Calculates the transformation matrix based on rotation and translation.
static IEqualityComparer< ExtrinsicParameters > Comparer
Gets a default equality comparer for comparing ExtrinsicParameters data values.
override string ToString()
Returns a string representation of the extrinsic parameters.
ExtrinsicParameters(PointXYZ rotation, PointXYZ translation)
Constructs ExtrinsicParameters from a rotation and a translation vector.
A point consists of x, y and z coordinate.
Definition PointXYZ.cs:11
float X
Gets or sets the X coordinate of the point.
Definition PointXYZ.cs:33
float Y
Gets or sets the Y coordinate of the point.
Definition PointXYZ.cs:39
A transformation matrix is a square matrix that, when multiplied by the coordinates of a geometric ob...