in IsometricPatternMatcher/HexGridCostFunction.h [32:51]
bool operator()(const Scalar* const paramTargetPose,
Scalar* residuals) const {
const Eigen::Map<const Sophus::SE3<Scalar>> T_camera_target(
paramTargetPose);
Ray3<Scalar> rayInTarget =
T_camera_target.inverse() * rayInCamera_.template cast<Scalar>();
Ray3<Scalar> rayNeighbourInTarget =
T_camera_target.inverse() *
rayNeighbourInCamera_.template cast<Scalar>();
Sophus::Vector<Scalar, 3> ptTarget3d =
rayInTarget.line().intersectionPoint(plane_.template cast<Scalar>());
Sophus::Vector<Scalar, 3> ptNeighbourTarget3d =
rayNeighbourInTarget.line().intersectionPoint(
plane_.template cast<Scalar>());
Sophus::Vector<Scalar, 3> delta = ptTarget3d - ptNeighbourTarget3d;
residuals[0] = delta.squaredNorm() - Scalar(transferSpacing_);
return true;
}