Graphite
Loading...
Searching...
No Matches
projection_jacobians.cuh
1#pragma once
2template <typename Scalar>
3__host__ __device__ void projection_simple(
4 const Eigen::Matrix<Scalar, 3, 1> &rvec,
5 const Eigen::Matrix<Scalar, 3, 1> &t, const Scalar f, const Scalar k1,
6 const Scalar k2, const Eigen::Matrix<Scalar, 3, 1> &point,
7 Eigen::Matrix<Scalar, 2, 9> &Jc, Eigen::Matrix<Scalar, 2, 3> &Jp) {
8 // Operation counts:
9 // add: 140
10 // branch: 1
11 // call: 3
12 // compare: 1
13 // divide: 7
14 // multiply: 344
15 // negate: 18
16 // total: 514
17
18 const Scalar v00009 = rvec(1, 0);
19 const Scalar v00007 = rvec(0, 0);
20 const Scalar v01484 = v00009 * v00009;
21 const Scalar v01482 = v00007 * v00007;
22 const Scalar v00011 = rvec(2, 0);
23 const Scalar v01651 = v01482 + v01484;
24 const Scalar v01488 = v00011 * v00011;
25 const Scalar v00013 = v01488 + v01651;
26 const Scalar v00014 = std::sqrt(v00013);
27 const Scalar v01654 = -static_cast<Scalar>(2);
28 Scalar v00033;
29 Scalar v00039;
30 Scalar v00045;
31 Scalar v00052;
32 Scalar v00057;
33 Scalar v00061;
34 Scalar v00069;
35 Scalar v00072;
36 Scalar v00076;
37 Scalar v00102;
38 Scalar v00111;
39 Scalar v00119;
40 Scalar v00126;
41 Scalar v00135;
42 Scalar v00141;
43 Scalar v00166;
44 Scalar v00169;
45 Scalar v00176;
46 Scalar v00193;
47 Scalar v00198;
48 Scalar v00206;
49 Scalar v00213;
50 Scalar v00222;
51 Scalar v00228;
52 Scalar v00239;
53 Scalar v00242;
54 Scalar v00245;
55 Scalar v00258;
56 Scalar v00263;
57 Scalar v00270;
58 Scalar v00278;
59 Scalar v00284;
60 Scalar v00287;
61 Scalar v00298;
62 Scalar v00301;
63 Scalar v00304;
64 if (static_cast<Scalar>(0) < v00014) {
65 const Scalar v00022 = v00014 * static_cast<Scalar>(0.5);
66 const Scalar v00089 = static_cast<Scalar>(1) / (v00013 * v00013);
67 const Scalar v01656 = -v00007;
68 const Scalar v01449 = v00009 * v00011;
69 const Scalar v00023 = std::cos(v00022);
70 const Scalar v01436 = v00089 * static_cast<Scalar>(4);
71 const Scalar v00028 = static_cast<Scalar>(1) / v00013;
72 const Scalar v00639 = v01449 + v01656;
73 const Scalar v00096 = static_cast<Scalar>(1) / (v00014 * v00014 * v00014);
74 const Scalar v00024 = std::sin(v00022);
75 const Scalar v01448 = v00007 * v00011;
76 const Scalar v01657 = -v00009;
77 const Scalar v01447 = v00007 * v00009;
78 const Scalar v01658 = -v00011;
79 const Scalar v01659 = -v00023;
80 const Scalar v01639 = v01436 * v01449;
81 const Scalar v01424 = v00007 * v00028;
82 const Scalar v01430 = v00024 * v00024;
83 const Scalar v01419 = v00009 * v00028;
84 const Scalar v01485 = v00009 * v00096;
85 const Scalar v00534 = v01448 + v01657;
86 const Scalar v01420 = v00011 * v00028;
87 const Scalar v01454 = v00011 * v00096;
88 const Scalar v00562 = v01447 + v01658;
89 const Scalar v01409 = v00023 * static_cast<Scalar>(2);
90 const Scalar v01423 = v00007 * v00024;
91 const Scalar v00019 = static_cast<Scalar>(1) / v00014;
92 const Scalar v01455 = v00023 * v00023;
93 const Scalar v01652 = v01482 + v01488;
94 const Scalar v01476 = static_cast<Scalar>(2) * v00028;
95 const Scalar v01653 = v01484 + v01488;
96 const Scalar v01425 = v00009 * v00024;
97 const Scalar v00584 = v00007 + v01449;
98 const Scalar v01426 = v00011 * v00024;
99 const Scalar v01582 = v01409 * (v00024 * v00096);
100 const Scalar v00485 = v00009 + v01448;
101 const Scalar v00482 = v00023 * v01659 + v01430;
102 const Scalar v01666 = -v00028;
103 const Scalar v00538 = v01455 + -v01430;
104 const Scalar v01099 = v00009 * v01436 * v01657 + v01476;
105 const Scalar v01587 = v01409 * v01454;
106 const Scalar v01166 = v00011 * v01436 * v01658 + v01476;
107 const Scalar v01441 = v00019 * v00023;
108 const Scalar v01428 = v00011 * v00023;
109 const Scalar v01586 = (v00023 * v00096) * v01654;
110 const Scalar v01457 = v00024 * static_cast<Scalar>(4);
111 const Scalar v01101 = v01099 * v01426;
112 const Scalar v01168 = v01166 * v01423;
113 const Scalar v01173 = v01166 * v01425;
114 const Scalar v00420 = v01420 * v01423;
115 const Scalar v00424 = v01419 * v01426;
116 const Scalar v01642 = v01430 * (v00028 * v01654);
117 const Scalar v00438 = v01419 * v01423;
118 const Scalar v01013 = v00482 * v01419 + v00485 * v01582;
119 const Scalar v01521 = v00024 * (v00007 * v01436 * v01656 + v01476);
120 const Scalar v01045 = v00482 * v01420 + (v00011 + v01447) * v01582;
121 const Scalar v01055 = v00562 * v01582 + v00538 * v01420;
122 const Scalar v01510 = v00007 * v00538;
123 const Scalar v01483 = v00007 * v00482;
124 const Scalar v01417 = v00024 * static_cast<Scalar>(2);
125 const Scalar v00479 = v01426 * v01521;
126 const Scalar v01037 = (v00089 * v01651 + v01666) * v01457 + v01586 * v01651;
127 const Scalar v01327 = v00024 * v01436 + v01586;
128 const Scalar v00519 = v01425 * v01521;
129 const Scalar v01065 = (v00089 * v01652 + v01666) * v01457 + v01586 * v01652;
130 const Scalar v00582 = (v01423 * v01639 + v00019 * v01409) * -v00024;
131 const Scalar v01117 = v01586 * v01653 + (v00089 * v01653 + v01666) * v01457;
132 const Scalar v00665 = v01423 * (v00024 * v01099);
133 v00033 = ((v00009 * v00019) * v01659 + v00420) * v01417;
134 v00039 = (v00007 * v01441 + v00424) * v01417;
135 v00045 = static_cast<Scalar>(1) + v01642 * v01651;
136 v00052 = static_cast<Scalar>(1) + v01642 * v01653;
137 v00057 = (v01428 * -v00019 + v00438) * v01417;
138 v00061 = (v00420 + v00009 * v01441) * v01417;
139 v00069 = (v00438 + v00019 * v01428) * v01417;
140 v00072 = static_cast<Scalar>(1) + v01642 * v01652;
141 v00076 = (v00424 + (v00007 * v00019) * v01659) * v01417;
142 v00102 = v00479 + v00007 * v01013;
143 v00111 = v00007 * v01424 * v01455 +
144 v00024 * ((v00019 + v00007 * (v00096 * v00639)) * v01409 +
145 -((v01424 + v01639) * v01423));
146 v00119 = v01037 * v01423;
147 v00126 = v01327 * v01423 * v01653;
148 v00135 = v00519 + v00007 * v01045;
149 v00141 = v00479 + v00007 * (v00534 * v01582 + v00538 * v01419);
150 v00166 = v00519 + v00007 * v01055;
151 v00169 = v01065 * v01423;
152 v00176 = v00582 + v00007 * (v00584 * v01582 + v00482 * v01424);
153 v00193 = v00582 + v00009 * v01013;
154 v00198 = v01419 * v01510 + v00024 * (v01101 + v01485 * (v00639 * v01409));
155 v00206 = v01037 * v01425;
156 v00213 = v01117 * v01425;
157 v00222 = v00665 + v00009 * v01045;
158 v00228 = v00023 * v01419 * (v00009 * v00023) +
159 v00024 * ((v00019 + v00534 * v01485) * v01409 +
160 -((v01436 * v01448 + v01419) * v01425));
161 v00239 = v00665 + v00009 * v01055;
162 v00242 = v01327 * v01425 * v01652;
163 v00245 = v01419 * v01483 + v00024 * (v01101 + v01485 * (v00584 * v01409));
164 v00258 = v01419 * (v00011 * v00482) + v00024 * (v01168 + v00485 * v01587);
165 v00263 = v01420 * v01510 + v00024 * (v01173 + v00639 * v01587);
166 v00270 = v01327 * v01426 * v01651;
167 v00278 = v01117 * v01426;
168 v00284 = v00582 + v00011 * v01045;
169 v00287 = v01419 * (v00011 * v00538) + v00024 * (v01168 + v00534 * v01587);
170 v00298 = v00023 * v01420 * v01428 +
171 v00024 * ((v00019 + v00562 * v01454) * v01409 +
172 -((v01436 * v01447 + v01420) * v01426));
173 v00301 = v01065 * v01426;
174 v00304 = v01420 * v01483 + v00024 * (v01173 + v00584 * v01587);
175 } else {
176 v00033 = static_cast<Scalar>(0);
177 v00039 = static_cast<Scalar>(0);
178 v00045 = static_cast<Scalar>(1);
179 v00052 = static_cast<Scalar>(1);
180 v00057 = static_cast<Scalar>(0);
181 v00061 = static_cast<Scalar>(0);
182 v00069 = static_cast<Scalar>(0);
183 v00072 = static_cast<Scalar>(1);
184 v00076 = static_cast<Scalar>(0);
185 v00102 = static_cast<Scalar>(0);
186 v00111 = static_cast<Scalar>(0);
187 v00119 = static_cast<Scalar>(0);
188 v00126 = static_cast<Scalar>(0);
189 v00135 = static_cast<Scalar>(0);
190 v00141 = static_cast<Scalar>(0);
191 v00166 = static_cast<Scalar>(0);
192 v00169 = static_cast<Scalar>(0);
193 v00176 = static_cast<Scalar>(0);
194 v00193 = static_cast<Scalar>(0);
195 v00198 = static_cast<Scalar>(0);
196 v00206 = static_cast<Scalar>(0);
197 v00213 = static_cast<Scalar>(0);
198 v00222 = static_cast<Scalar>(0);
199 v00228 = static_cast<Scalar>(0);
200 v00239 = static_cast<Scalar>(0);
201 v00242 = static_cast<Scalar>(0);
202 v00245 = static_cast<Scalar>(0);
203 v00258 = static_cast<Scalar>(0);
204 v00263 = static_cast<Scalar>(0);
205 v00270 = static_cast<Scalar>(0);
206 v00278 = static_cast<Scalar>(0);
207 v00284 = static_cast<Scalar>(0);
208 v00287 = static_cast<Scalar>(0);
209 v00298 = static_cast<Scalar>(0);
210 v00301 = static_cast<Scalar>(0);
211 v00304 = static_cast<Scalar>(0);
212 }
213 const Scalar v00041 = point(2, 0);
214 const Scalar v00035 = point(1, 0);
215 const Scalar v00005 = point(0, 0);
216 const Scalar v00078 = t(1, 0);
217 const Scalar v00063 = t(0, 0);
218 const Scalar v00004 = t(2, 0);
219 const Scalar v00466 =
220 v00078 + v00005 * v00069 + v00035 * v00072 + v00041 * v00076;
221 const Scalar v00448 =
222 v00063 + v00005 * v00052 + v00035 * v00057 + v00041 * v00061;
223 const Scalar v00047 =
224 v00004 + v00005 * v00033 + v00035 * v00039 + v00041 * v00045;
225 const Scalar v01554 = v00047 * v00047;
226 const Scalar v01319 = v00448 * v00448 + v00466 * v00466;
227 const Scalar v00049 = static_cast<Scalar>(1) / v01554;
228 const Scalar v00084 = k2;
229 const Scalar v01674 = -v01319;
230 const Scalar v01671 = -v00049;
231 const Scalar v00852 = v00005 * v00298 + v00035 * v00301 + v00041 * v00304;
232 const Scalar v00816 = v00005 * v00278 + v00035 * v00284 + v00041 * v00287;
233 const Scalar v00148 = static_cast<Scalar>(1) / (v00047 * v01554);
234 const Scalar v01629 = v01671 * v01674;
235 const Scalar v00725 = v00005 * v00239 + v00035 * v00242 + v00041 * v00245;
236 const Scalar v00686 = v00005 * v00213 + v00035 * v00222 + v00041 * v00228;
237 const Scalar v00594 = v00005 * v00166 + v00035 * v00169 + v00041 * v00176;
238 const Scalar v00544 = v00005 * v00126 + v00035 * v00135 + v00041 * v00141;
239 const Scalar v00003 = k1;
240 const Scalar v01446 = v00148 * v01319;
241 const Scalar v01408 = static_cast<Scalar>(-1) * static_cast<Scalar>(-1);
242 const Scalar v00610 = v00003 + (v00084 * v01319) * v01654 * v01671;
243 const Scalar v01599 = v01408 * v01446;
244 const Scalar v00272 = v00005 * v00258 + v00035 * v00263 + v00041 * v00270;
245 const Scalar v00208 = v00005 * v00193 + v00035 * v00198 + v00041 * v00206;
246 const Scalar v00121 = v00005 * v00102 + v00035 * v00111 + v00041 * v00119;
247 const Scalar v00144 = static_cast<Scalar>(1) / v00047;
248 const Scalar v00001 = f;
249 const Scalar v01598 = (v00466 * v00610) * v01654;
250 const Scalar v01375 =
251 v00272 * v01599 + (v00448 * v00816 + v00466 * v00852) * v01671;
252 const Scalar v00475 =
253 static_cast<Scalar>(1) + (v00003 + v00084 * v01629) * v01629;
254 const Scalar v01359 =
255 v00208 * v01599 + (v00448 * v00686 + v00466 * v00725) * v01671;
256 const Scalar v01339 =
257 v00121 * v01599 + (v00448 * v00544 + v00466 * v00594) * v01671;
258 const Scalar v01597 = (v00448 * v00610) * v01654;
259 const Scalar v01584 = v00466 * v01671;
260 const Scalar v01590 = v00148 * v01674;
261 const Scalar v01583 = v00448 * v01671;
262 const Scalar v01655 = -v00001;
263 const Scalar v01412 = static_cast<Scalar>(2) * v00610;
264 const Scalar v01672 = -v00466;
265 const Scalar v01581 = (v00144 * v00610) * v01654;
266 const Scalar v01673 = -v00448;
267 const Scalar v01585 = v01655 * v01671;
268 const Scalar v01610 = v00466 * v01412;
269 const Scalar v01593 = (v00466 * v00475) * v01671;
270 const Scalar v01592 = (v00448 * v00475) * v01671;
271 const Scalar v01641 = v01581 * v01672;
272 const Scalar v01403 =
273 v00045 * v01590 + v00049 * (v00061 * v00448 + v00076 * v00466);
274 const Scalar v01399 =
275 v00039 * v01590 + v00049 * (v00057 * v00448 + v00072 * v00466);
276 const Scalar v01395 =
277 v00033 * v01590 + v00049 * (v00052 * v00448 + v00069 * v00466);
278 const Scalar v01640 = v01581 * v01673;
279 const Scalar v01650 = (v01408 * v01671) * ((v01319 * v01319) * v01585);
280 const Scalar v01646 = (v00144 * v01319) * v01585;
281 const Scalar v01564 = v00144 * v00475;
282 const Scalar v01617 =
283 (v00610 * v01446 * v01654 * -v00144 + v00049 * v00475) * v01655;
284 const Scalar v01606 = v00144 * v01655;
285 const Scalar v00358 = (v00001 * v00144) * v01583 * v01610;
286 Jc(0, 0) =
287 (v00121 * v01592 + v00144 * (v00475 * v00544 + v01339 * v01597)) * v01655;
288 Jc(0, 1) =
289 (v00208 * v01592 + v00144 * (v00475 * v00686 + v01359 * v01597)) * v01655;
290 Jc(0, 2) =
291 (v00272 * v01592 + v00144 * (v00475 * v00816 + v01375 * v01597)) * v01655;
292 Jc(0, 3) = (v00475 + (v00049 * v00448) * (v00448 * v01412)) * v01606;
293 Jc(0, 4) = v00358;
294 Jc(0, 5) = v01617 * v01673;
295 Jc(0, 6) = v01564 * v01673;
296 Jc(0, 7) = v01646 * v01673;
297 Jc(0, 8) = (v00144 * v00448) * v01650;
298 Jc(1, 0) =
299 (v00121 * v01593 + v00144 * (v00475 * v00594 + v01339 * v01598)) * v01655;
300 Jc(1, 1) =
301 (v00208 * v01593 + v00144 * (v00475 * v00725 + v01359 * v01598)) * v01655;
302 Jc(1, 2) =
303 (v00272 * v01593 + v00144 * (v00475 * v00852 + v01375 * v01598)) * v01655;
304 Jc(1, 3) = v00358;
305 Jc(1, 4) = (v00475 + (v00049 * v00466) * v01610) * v01606;
306 Jc(1, 5) = v01617 * v01672;
307 Jc(1, 6) = v01564 * v01672;
308 Jc(1, 7) = v01646 * v01672;
309 Jc(1, 8) = (v00144 * v00466) * v01650;
310 Jp(0, 0) =
311 (v01395 * v01640 + v00475 * (v00033 * v01583 + v00052 * v00144)) * v01655;
312 Jp(0, 1) =
313 (v01399 * v01640 + v00475 * (v00039 * v01583 + v00057 * v00144)) * v01655;
314 Jp(0, 2) =
315 (v01403 * v01640 + v00475 * (v00045 * v01583 + v00061 * v00144)) * v01655;
316 Jp(1, 0) =
317 (v01395 * v01641 + v00475 * (v00033 * v01584 + v00069 * v00144)) * v01655;
318 Jp(1, 1) =
319 (v01399 * v01641 + v00475 * (v00039 * v01584 + v00072 * v00144)) * v01655;
320 Jp(1, 2) =
321 (v01403 * v01641 + v00475 * (v00045 * v01584 + v00076 * v00144)) * v01655;
322}