ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
essential_matrix_coeffs.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 {
9  const double* b = B.data();
10 
11  coeffs(0) = b[0] * b[17] * b[34] + b[26] * b[4] * b[21] -
12  b[26] * b[17] * b[8] - b[13] * b[4] * b[34] -
13  b[0] * b[21] * b[30] + b[13] * b[30] * b[8];
14  coeffs(1) =
15  b[26] * b[4] * b[22] + b[14] * b[30] * b[8] + b[13] * b[31] * b[8] +
16  b[1] * b[17] * b[34] - b[13] * b[5] * b[34] + b[26] * b[5] * b[21] -
17  b[0] * b[21] * b[31] - b[26] * b[17] * b[9] - b[1] * b[21] * b[30] +
18  b[27] * b[4] * b[21] + b[0] * b[17] * b[35] - b[0] * b[22] * b[30] +
19  b[13] * b[30] * b[9] + b[0] * b[18] * b[34] - b[27] * b[17] * b[8] -
20  b[14] * b[4] * b[34] - b[13] * b[4] * b[35] - b[26] * b[18] * b[8];
21  coeffs(2) =
22  b[14] * b[30] * b[9] + b[14] * b[31] * b[8] + b[13] * b[31] * b[9] -
23  b[13] * b[4] * b[36] - b[13] * b[5] * b[35] + b[15] * b[30] * b[8] -
24  b[13] * b[6] * b[34] + b[13] * b[30] * b[10] +
25  b[13] * b[32] * b[8] - b[14] * b[4] * b[35] - b[14] * b[5] * b[34] +
26  b[26] * b[4] * b[23] + b[26] * b[5] * b[22] + b[26] * b[6] * b[21] -
27  b[26] * b[17] * b[10] - b[15] * b[4] * b[34] -
28  b[26] * b[18] * b[9] - b[26] * b[19] * b[8] + b[27] * b[4] * b[22] +
29  b[27] * b[5] * b[21] - b[27] * b[17] * b[9] - b[27] * b[18] * b[8] -
30  b[1] * b[21] * b[31] - b[0] * b[23] * b[30] - b[0] * b[21] * b[32] +
31  b[28] * b[4] * b[21] - b[28] * b[17] * b[8] + b[2] * b[17] * b[34] +
32  b[0] * b[18] * b[35] - b[0] * b[22] * b[31] + b[0] * b[17] * b[36] +
33  b[0] * b[19] * b[34] - b[1] * b[22] * b[30] + b[1] * b[18] * b[34] +
34  b[1] * b[17] * b[35] - b[2] * b[21] * b[30];
35  coeffs(3) =
36  b[14] * b[30] * b[10] + b[14] * b[32] * b[8] -
37  b[3] * b[21] * b[30] + b[3] * b[17] * b[34] + b[13] * b[32] * b[9] +
38  b[13] * b[33] * b[8] - b[13] * b[4] * b[37] - b[13] * b[5] * b[36] +
39  b[15] * b[30] * b[9] + b[15] * b[31] * b[8] - b[16] * b[4] * b[34] -
40  b[13] * b[6] * b[35] - b[13] * b[7] * b[34] +
41  b[13] * b[30] * b[11] + b[13] * b[31] * b[10] +
42  b[14] * b[31] * b[9] - b[14] * b[4] * b[36] - b[14] * b[5] * b[35] -
43  b[14] * b[6] * b[34] + b[16] * b[30] * b[8] - b[26] * b[20] * b[8] +
44  b[26] * b[4] * b[24] + b[26] * b[5] * b[23] + b[26] * b[6] * b[22] +
45  b[26] * b[7] * b[21] - b[26] * b[17] * b[11] -
46  b[15] * b[4] * b[35] - b[15] * b[5] * b[34] -
47  b[26] * b[18] * b[10] - b[26] * b[19] * b[9] +
48  b[27] * b[4] * b[23] + b[27] * b[5] * b[22] + b[27] * b[6] * b[21] -
49  b[27] * b[17] * b[10] - b[27] * b[18] * b[9] -
50  b[27] * b[19] * b[8] + b[0] * b[17] * b[37] - b[0] * b[23] * b[31] -
51  b[0] * b[24] * b[30] - b[0] * b[21] * b[33] - b[29] * b[17] * b[8] +
52  b[28] * b[4] * b[22] + b[28] * b[5] * b[21] - b[28] * b[17] * b[9] -
53  b[28] * b[18] * b[8] + b[29] * b[4] * b[21] + b[1] * b[19] * b[34] -
54  b[2] * b[21] * b[31] + b[0] * b[20] * b[34] + b[0] * b[19] * b[35] +
55  b[0] * b[18] * b[36] - b[0] * b[22] * b[32] - b[1] * b[23] * b[30] -
56  b[1] * b[21] * b[32] + b[1] * b[18] * b[35] - b[1] * b[22] * b[31] -
57  b[2] * b[22] * b[30] + b[2] * b[17] * b[35] + b[1] * b[17] * b[36] +
58  b[2] * b[18] * b[34];
59  coeffs(4) =
60  -b[14] * b[6] * b[35] - b[14] * b[7] * b[34] -
61  b[3] * b[22] * b[30] - b[3] * b[21] * b[31] + b[3] * b[17] * b[35] +
62  b[3] * b[18] * b[34] + b[13] * b[32] * b[10] +
63  b[13] * b[33] * b[9] - b[13] * b[4] * b[38] - b[13] * b[5] * b[37] -
64  b[15] * b[6] * b[34] + b[15] * b[30] * b[10] +
65  b[15] * b[32] * b[8] - b[16] * b[4] * b[35] - b[13] * b[6] * b[36] -
66  b[13] * b[7] * b[35] + b[13] * b[31] * b[11] +
67  b[13] * b[30] * b[12] + b[14] * b[32] * b[9] +
68  b[14] * b[33] * b[8] - b[14] * b[4] * b[37] - b[14] * b[5] * b[36] +
69  b[16] * b[30] * b[9] + b[16] * b[31] * b[8] - b[26] * b[20] * b[9] +
70  b[26] * b[4] * b[25] + b[26] * b[5] * b[24] + b[26] * b[6] * b[23] +
71  b[26] * b[7] * b[22] - b[26] * b[17] * b[12] +
72  b[14] * b[30] * b[11] + b[14] * b[31] * b[10] +
73  b[15] * b[31] * b[9] - b[15] * b[4] * b[36] - b[15] * b[5] * b[35] -
74  b[26] * b[18] * b[11] - b[26] * b[19] * b[10] -
75  b[27] * b[20] * b[8] + b[27] * b[4] * b[24] + b[27] * b[5] * b[23] +
76  b[27] * b[6] * b[22] + b[27] * b[7] * b[21] -
77  b[27] * b[17] * b[11] - b[27] * b[18] * b[10] -
78  b[27] * b[19] * b[9] - b[16] * b[5] * b[34] - b[29] * b[17] * b[9] -
79  b[29] * b[18] * b[8] + b[28] * b[4] * b[23] + b[28] * b[5] * b[22] +
80  b[28] * b[6] * b[21] - b[28] * b[17] * b[10] -
81  b[28] * b[18] * b[9] - b[28] * b[19] * b[8] + b[29] * b[4] * b[22] +
82  b[29] * b[5] * b[21] - b[2] * b[23] * b[30] + b[2] * b[18] * b[35] -
83  b[1] * b[22] * b[32] - b[2] * b[21] * b[32] + b[2] * b[19] * b[34] +
84  b[0] * b[19] * b[36] - b[0] * b[22] * b[33] + b[0] * b[20] * b[35] -
85  b[0] * b[23] * b[32] - b[0] * b[25] * b[30] + b[0] * b[17] * b[38] +
86  b[0] * b[18] * b[37] - b[0] * b[24] * b[31] + b[1] * b[17] * b[37] -
87  b[1] * b[23] * b[31] - b[1] * b[24] * b[30] - b[1] * b[21] * b[33] +
88  b[1] * b[20] * b[34] + b[1] * b[19] * b[35] + b[1] * b[18] * b[36] +
89  b[2] * b[17] * b[36] - b[2] * b[22] * b[31];
90  coeffs(5) =
91  -b[14] * b[6] * b[36] - b[14] * b[7] * b[35] +
92  b[14] * b[31] * b[11] - b[3] * b[23] * b[30] -
93  b[3] * b[21] * b[32] + b[3] * b[18] * b[35] - b[3] * b[22] * b[31] +
94  b[3] * b[17] * b[36] + b[3] * b[19] * b[34] +
95  b[13] * b[32] * b[11] + b[13] * b[33] * b[10] -
96  b[13] * b[5] * b[38] - b[15] * b[6] * b[35] - b[15] * b[7] * b[34] +
97  b[15] * b[30] * b[11] + b[15] * b[31] * b[10] +
98  b[16] * b[31] * b[9] - b[13] * b[6] * b[37] - b[13] * b[7] * b[36] +
99  b[13] * b[31] * b[12] + b[14] * b[32] * b[10] +
100  b[14] * b[33] * b[9] - b[14] * b[4] * b[38] - b[14] * b[5] * b[37] -
101  b[16] * b[6] * b[34] + b[16] * b[30] * b[10] +
102  b[16] * b[32] * b[8] - b[26] * b[20] * b[10] +
103  b[26] * b[5] * b[25] + b[26] * b[6] * b[24] + b[26] * b[7] * b[23] +
104  b[14] * b[30] * b[12] + b[15] * b[32] * b[9] +
105  b[15] * b[33] * b[8] - b[15] * b[4] * b[37] - b[15] * b[5] * b[36] +
106  b[29] * b[5] * b[22] + b[29] * b[6] * b[21] -
107  b[26] * b[18] * b[12] - b[26] * b[19] * b[11] -
108  b[27] * b[20] * b[9] + b[27] * b[4] * b[25] + b[27] * b[5] * b[24] +
109  b[27] * b[6] * b[23] + b[27] * b[7] * b[22] -
110  b[27] * b[17] * b[12] - b[27] * b[18] * b[11] -
111  b[27] * b[19] * b[10] - b[28] * b[20] * b[8] -
112  b[16] * b[4] * b[36] - b[16] * b[5] * b[35] -
113  b[29] * b[17] * b[10] - b[29] * b[18] * b[9] -
114  b[29] * b[19] * b[8] + b[28] * b[4] * b[24] + b[28] * b[5] * b[23] +
115  b[28] * b[6] * b[22] + b[28] * b[7] * b[21] -
116  b[28] * b[17] * b[11] - b[28] * b[18] * b[10] -
117  b[28] * b[19] * b[9] + b[29] * b[4] * b[23] - b[2] * b[22] * b[32] -
118  b[2] * b[21] * b[33] - b[1] * b[24] * b[31] + b[0] * b[18] * b[38] -
119  b[0] * b[24] * b[32] + b[0] * b[19] * b[37] + b[0] * b[20] * b[36] -
120  b[0] * b[25] * b[31] - b[0] * b[23] * b[33] + b[1] * b[19] * b[36] -
121  b[1] * b[22] * b[33] + b[1] * b[20] * b[35] + b[2] * b[19] * b[35] -
122  b[2] * b[24] * b[30] - b[2] * b[23] * b[31] + b[2] * b[20] * b[34] +
123  b[2] * b[17] * b[37] - b[1] * b[25] * b[30] + b[1] * b[18] * b[37] +
124  b[1] * b[17] * b[38] - b[1] * b[23] * b[32] + b[2] * b[18] * b[36];
125  coeffs(6) =
126  -b[14] * b[6] * b[37] - b[14] * b[7] * b[36] +
127  b[14] * b[31] * b[12] + b[3] * b[17] * b[37] -
128  b[3] * b[23] * b[31] - b[3] * b[24] * b[30] - b[3] * b[21] * b[33] +
129  b[3] * b[20] * b[34] + b[3] * b[19] * b[35] + b[3] * b[18] * b[36] -
130  b[3] * b[22] * b[32] + b[13] * b[32] * b[12] +
131  b[13] * b[33] * b[11] - b[15] * b[6] * b[36] -
132  b[15] * b[7] * b[35] + b[15] * b[31] * b[11] +
133  b[15] * b[30] * b[12] + b[16] * b[32] * b[9] +
134  b[16] * b[33] * b[8] - b[13] * b[6] * b[38] - b[13] * b[7] * b[37] +
135  b[14] * b[32] * b[11] + b[14] * b[33] * b[10] -
136  b[14] * b[5] * b[38] - b[16] * b[6] * b[35] - b[16] * b[7] * b[34] +
137  b[16] * b[30] * b[11] + b[16] * b[31] * b[10] -
138  b[26] * b[19] * b[12] - b[26] * b[20] * b[11] +
139  b[26] * b[6] * b[25] + b[26] * b[7] * b[24] +
140  b[15] * b[32] * b[10] + b[15] * b[33] * b[9] -
141  b[15] * b[4] * b[38] - b[15] * b[5] * b[37] + b[29] * b[5] * b[23] +
142  b[29] * b[6] * b[22] + b[29] * b[7] * b[21] -
143  b[27] * b[20] * b[10] + b[27] * b[5] * b[25] +
144  b[27] * b[6] * b[24] + b[27] * b[7] * b[23] -
145  b[27] * b[18] * b[12] - b[27] * b[19] * b[11] -
146  b[28] * b[20] * b[9] - b[16] * b[4] * b[37] - b[16] * b[5] * b[36] +
147  b[0] * b[19] * b[38] - b[0] * b[24] * b[33] + b[0] * b[20] * b[37] -
148  b[29] * b[17] * b[11] - b[29] * b[18] * b[10] -
149  b[29] * b[19] * b[9] + b[28] * b[4] * b[25] + b[28] * b[5] * b[24] +
150  b[28] * b[6] * b[23] + b[28] * b[7] * b[22] -
151  b[28] * b[17] * b[12] - b[28] * b[18] * b[11] -
152  b[28] * b[19] * b[10] - b[29] * b[20] * b[8] +
153  b[29] * b[4] * b[24] + b[2] * b[18] * b[37] - b[0] * b[25] * b[32] +
154  b[1] * b[18] * b[38] - b[1] * b[24] * b[32] + b[1] * b[19] * b[37] +
155  b[1] * b[20] * b[36] - b[1] * b[25] * b[31] + b[2] * b[17] * b[38] +
156  b[2] * b[19] * b[36] - b[2] * b[24] * b[31] - b[2] * b[22] * b[33] -
157  b[2] * b[23] * b[32] + b[2] * b[20] * b[35] - b[1] * b[23] * b[33] -
158  b[2] * b[25] * b[30];
159  coeffs(7) =
160  -b[14] * b[6] * b[38] - b[14] * b[7] * b[37] +
161  b[3] * b[19] * b[36] - b[3] * b[22] * b[33] + b[3] * b[20] * b[35] -
162  b[3] * b[23] * b[32] - b[3] * b[25] * b[30] + b[3] * b[17] * b[38] +
163  b[3] * b[18] * b[37] - b[3] * b[24] * b[31] - b[15] * b[6] * b[37] -
164  b[15] * b[7] * b[36] + b[15] * b[31] * b[12] +
165  b[16] * b[32] * b[10] + b[16] * b[33] * b[9] +
166  b[13] * b[33] * b[12] - b[13] * b[7] * b[38] +
167  b[14] * b[32] * b[12] + b[14] * b[33] * b[11] -
168  b[16] * b[6] * b[36] - b[16] * b[7] * b[35] +
169  b[16] * b[31] * b[11] + b[16] * b[30] * b[12] +
170  b[15] * b[32] * b[11] + b[15] * b[33] * b[10] -
171  b[15] * b[5] * b[38] + b[29] * b[5] * b[24] + b[29] * b[6] * b[23] -
172  b[26] * b[20] * b[12] + b[26] * b[7] * b[25] -
173  b[27] * b[19] * b[12] - b[27] * b[20] * b[11] +
174  b[27] * b[6] * b[25] + b[27] * b[7] * b[24] -
175  b[28] * b[20] * b[10] - b[16] * b[4] * b[38] -
176  b[16] * b[5] * b[37] + b[29] * b[7] * b[22] -
177  b[29] * b[17] * b[12] - b[29] * b[18] * b[11] -
178  b[29] * b[19] * b[10] + b[28] * b[5] * b[25] +
179  b[28] * b[6] * b[24] + b[28] * b[7] * b[23] -
180  b[28] * b[18] * b[12] - b[28] * b[19] * b[11] -
181  b[29] * b[20] * b[9] + b[29] * b[4] * b[25] - b[2] * b[24] * b[32] +
182  b[0] * b[20] * b[38] - b[0] * b[25] * b[33] + b[1] * b[19] * b[38] -
183  b[1] * b[24] * b[33] + b[1] * b[20] * b[37] - b[2] * b[25] * b[31] +
184  b[2] * b[20] * b[36] - b[1] * b[25] * b[32] + b[2] * b[19] * b[37] +
185  b[2] * b[18] * b[38] - b[2] * b[23] * b[33];
186  coeffs(8) =
187  b[3] * b[18] * b[38] - b[3] * b[24] * b[32] + b[3] * b[19] * b[37] +
188  b[3] * b[20] * b[36] - b[3] * b[25] * b[31] - b[3] * b[23] * b[33] -
189  b[15] * b[6] * b[38] - b[15] * b[7] * b[37] +
190  b[16] * b[32] * b[11] + b[16] * b[33] * b[10] -
191  b[16] * b[5] * b[38] - b[16] * b[6] * b[37] - b[16] * b[7] * b[36] +
192  b[16] * b[31] * b[12] + b[14] * b[33] * b[12] -
193  b[14] * b[7] * b[38] + b[15] * b[32] * b[12] +
194  b[15] * b[33] * b[11] + b[29] * b[5] * b[25] +
195  b[29] * b[6] * b[24] - b[27] * b[20] * b[12] +
196  b[27] * b[7] * b[25] - b[28] * b[19] * b[12] -
197  b[28] * b[20] * b[11] + b[29] * b[7] * b[23] -
198  b[29] * b[18] * b[12] - b[29] * b[19] * b[11] +
199  b[28] * b[6] * b[25] + b[28] * b[7] * b[24] -
200  b[29] * b[20] * b[10] + b[2] * b[19] * b[38] -
201  b[1] * b[25] * b[33] + b[2] * b[20] * b[37] - b[2] * b[24] * b[33] -
202  b[2] * b[25] * b[32] + b[1] * b[20] * b[38];
203  coeffs(9) = b[29] * b[7] * b[24] - b[29] * b[20] * b[11] +
204  b[2] * b[20] * b[38] - b[2] * b[25] * b[33] -
205  b[28] * b[20] * b[12] + b[28] * b[7] * b[25] -
206  b[29] * b[19] * b[12] - b[3] * b[24] * b[33] +
207  b[15] * b[33] * b[12] + b[3] * b[19] * b[38] -
208  b[16] * b[6] * b[38] + b[3] * b[20] * b[37] +
209  b[16] * b[32] * b[12] + b[29] * b[6] * b[25] -
210  b[16] * b[7] * b[37] - b[3] * b[25] * b[32] -
211  b[15] * b[7] * b[38] + b[16] * b[33] * b[11];
212  coeffs(10) = -b[29] * b[20] * b[12] + b[29] * b[7] * b[25] +
213  b[16] * b[33] * b[12] - b[16] * b[7] * b[38] +
214  b[3] * b[20] * b[38] - b[3] * b[25] * b[33];
215 }
coeffs(0)