21 -> Eigen::Matrix<TT, 2, 1> {
22 return inverse_depth_point.projInZ1Plane();
30 -> Eigen::Matrix<TT, 2, 3> {
31 Eigen::Matrix<TT, 2, 3> dx;
43 -> Eigen::Matrix<TT, 2, 6> {
44 Eigen::Matrix<TT, 2, 6> dx;
46 TT psi = inverse_depth_point.psi();
48 TT a = inverse_depth_point.projInZ1Plane().x();
49 TT b = inverse_depth_point.projInZ1Plane().y();
52 psi, 0, -psi * a, -a*b, a*a + i, -b,
53 0, psi, -psi * b, -b*b - i, a*b, a;
70 -> Eigen::Matrix<TT, 3, 1> {
71 return foo_from_bar.so3() *
72 unproj(inverse_depth_point_in_bar.projInZ1Plane()) +
73 inverse_depth_point_in_bar.psi() * foo_from_bar.translation();
90 -> Eigen::Matrix<TT, 2, 1> {
132 : foo_from_bar_(foo_from_bar),
133 foo_rotation_bar_(foo_from_bar.so3().matrix()),
134 bar_origin_in_foo_(foo_from_bar.translation()) {}
137 [[nodiscard]]
auto transform(Eigen::Matrix<TT, 3, 1>
const& point_in_bar)
138 const -> Eigen::Matrix<TT, 3, 1> {
139 return foo_rotation_bar_ * point_in_bar + bar_origin_in_foo_;
144 -> Eigen::Matrix<TT, 3, 1> {
145 return foo_rotation_bar_ *
146 unproj(inverse_depth_point_in_bar.projInZ1Plane()) +
147 inverse_depth_point_in_bar.psi() * bar_origin_in_foo_;
152 [[nodiscard]]
auto projTransform(Eigen::Matrix<TT, 3, 1>
const& point_in_bar)
153 const -> Eigen::Matrix<TT, 2, 1> {
154 return proj(foo_rotation_bar_ * point_in_bar + bar_origin_in_foo_);
161 -> Eigen::Matrix<TT, 2, 1> {
172 -> Eigen::Matrix<TT, 2, 6> {
173 Eigen::Matrix<TT, 2, 6> dx;
175 TT psi = inverse_depth_point_in_bar.psi();
176 Eigen::Matrix<TT, 3, 1> scaled_point_in_foo =
178 TT x = scaled_point_in_foo[0];
179 TT y = scaled_point_in_foo[1];
180 TT z = scaled_point_in_foo[2];
185 psi/z, 0, -psi * x / z_sq, -x*y/z_sq, x*x/z_sq + i, -y/z,
186 0, psi/z, -psi * y / z_sq, -y*y/z_sq - i, x*y/z_sq, x/z;
194 -> Eigen::Matrix<TT, 2, 3> {
199 Eigen::Matrix3<TT> mat_j;
207 return foo_from_bar_;
210 return foo_rotation_bar_;
213 return bar_origin_in_foo_;
218 Eigen::Matrix<TT, 3, 3> foo_rotation_bar_;
219 Eigen::Matrix<TT, 3, 1> bar_origin_in_foo_;