Линия в двух измерениях такая же, как Гиперплоскость в двух измерениях.И для этого случая есть метод intersection
:
#include <Eigen/Geometry>
#include <iostream>
int main() {
typedef Eigen::Hyperplane<float,2> Line2;
typedef Eigen::Vector2f Vec2;
Vec2 a(8,2), b(9,5), c(6,6), d(5,9);
Line2 ac = Line2::Through(a,c), bd=Line2::Through(b,d);
std::cout << "Intersection:\n" << ac.intersection(bd) << '\n';
}
Результат [4, 10]
, как и ваш код.