Files
ceres-solver/internal/ceres/manifold_adapter.h
T
Sergiu Deitsch a35bd1bf90 Use = default for trivial special members
Applied changes correspond to clang-tidy fixes
stemming from the modernize-use-equals-default check.

Change-Id: I254b0908a76d464131564b637cd0e42a6b03fb5a
2022-02-09 18:38:52 +01:00

62 lines
1.8 KiB
C++

#include "ceres/local_parameterization.h"
#include "ceres/manifold.h"
#include "glog/logging.h"
namespace ceres {
namespace internal {
// Adapter to wrap LocalParameterization and make them look like Manifolds.
//
// ManifoldAdapter NEVER takes ownership of local_parameterization.
class ManifoldAdapter : public Manifold {
public:
ManifoldAdapter(const LocalParameterization* local_parameterization)
: local_parameterization_(local_parameterization) {
CHECK(local_parameterization != nullptr);
}
~ManifoldAdapter() override = default;
bool Plus(const double* x,
const double* delta,
double* x_plus_delta) const override {
return local_parameterization_->Plus(x, delta, x_plus_delta);
}
bool PlusJacobian(const double* x, double* jacobian) const override {
return local_parameterization_->ComputeJacobian(x, jacobian);
}
bool RightMultiplyByPlusJacobian(const double* x,
const int num_rows,
const double* ambient_matrix,
double* tangent_matrix) const override {
return local_parameterization_->MultiplyByJacobian(
x, num_rows, ambient_matrix, tangent_matrix);
}
bool Minus(const double* y, const double* x, double* delta) const override {
LOG(FATAL) << "This should never be called.";
return false;
}
bool MinusJacobian(const double* x, double* jacobian) const override {
LOG(FATAL) << "This should never be called.";
return false;
}
int AmbientSize() const override {
return local_parameterization_->GlobalSize();
}
int TangentSize() const override {
return local_parameterization_->LocalSize();
}
private:
const LocalParameterization* local_parameterization_;
};
} // namespace internal
} // namespace ceres