16 static constexpr size_t dimension = 3;
17 using Vertex = Point<T>;
20 d_fn
static void parameters(
const Vertex &vertex, P *parameters) {
21 Eigen::Map<Eigen::Matrix<P, dimension, 1>> params_map(parameters);
22 params_map = vertex.template cast<P>();
25 d_fn
static void update(Vertex &vertex,
const T *delta) {
26 Eigen::Map<const Eigen::Matrix<T, dimension, 1>> d(delta);
32 static constexpr size_t dimension = 9;
33 using State = Camera<T>;
34 using Vertex = Camera<T>;
37 d_fn
static void parameters(
const Vertex &vertex, P *parameters) {
38 Eigen::Map<Eigen::Matrix<P, dimension, 1>> params_map(parameters);
39 params_map = vertex.template cast<P>();
42 d_fn
static void update(Vertex &vertex,
const T *delta) {
43 Eigen::Map<const Eigen::Matrix<T, dimension, 1>> d(delta);
48 d_fn
static State get_state(
const Vertex &vertex) {
return vertex; }
50 d_fn
static void set_state(Vertex &vertex,
const State &state) {
62 static constexpr size_t dimension = 2;
63 using VertexDescriptors =
64 std::tuple<CameraDescriptor<T, S>, PointDescriptor<T, S>>;
65 using Observation = Eigen::Matrix<T, dimension, 1>;
67 using Loss = DefaultLoss<T, dimension>;
75 d_fn
static void error(
const D *camera,
const D *point,
76 const Observation &obs, D *error) {
77 bal_reprojection_error_simple<D, Observation, T>(camera, point, &obs,
81 template <
typename D,
size_t I>
82 d_fn
static void jacobian(
const Camera<T> &camera,
const Point<T> &point,
83 const Observation &obs, D *jacobian) {
84 bal_jacobian_simple<T, D, I>(camera.data(), point.data(), &obs, jacobian);
89using ReprojectionError = FactorDescriptor<T, S, ReprojectionErrorTraits<T, S>>;