Кросс-продуктовая матрица в Eigen

Есть ли готовая функция или метод в Eigen для оператора Hat? Это оператор, возвращающий матрицу, которая имитирует кросс-продукт с этим вектором. Я знаю, что его можно легко написать, но хотелось бы избежать этого:

Eigen::Vector3d t = // some vector ;
Eigen::Matrix3d t_hat;
t_hat << 0, -t(2), t(1),
    t(2), 0, -t(0),
    -t(1), t(0), 0;

Ответ 1

Как вы отметили cross и cross3 методы фактически выполняют умножение. Но вы хотите сделать кососимметричную матрицу в виде t.

То, что вам кажется лучшим, можно сделать для Vector3d и Matrix3d. Обобщение для различных типов t потребует больше времени, чем сейчас, но это интересный вопрос, поэтому я могу исследовать его позже.