У меня есть ориентированная ограничительная рамка в мировой системе координат.Я хочу узнать его вращение вокруг оси Y в системе координат камеры.
Так ориентированная ограничительная рамка представлена нормированными осями и размерами.
class BoundingBox3D {
public:
Eigen::Vector3f centroid;
Eigen::Vector3f size_along_obb_axes;
// define OBB local coordinate system for the orientation
Eigen::Vector3f x_axis;
Eigen::Vector3f y_axis;
Eigen::Vector3f z_axis;
}
Кстати, нормализованные оси также составляют столбцы его матрицы вращения относительно мировой системы координат.
У меня есть матрица преобразования системы координат мира в камеру, с помощью которой я преобразую каждую осьв систему координат камеры.Я строю матрицу вращения, используя преобразованные оси в качестве столбцов, и получаю углы Эйлера из матрицы вращения следующим образом:
this->rot_mat << this->transformed_x_axis[0], this->transformed_y_axis[0], this->transformed_z_axis[0],
this->transformed_x_axis[1], this->transformed_y_axis[1], this->transformed_z_axis[1],
this->transformed_x_axis[2], this->transformed_y_axis[2], this->transformed_z_axis[2];
this->heading_rad = this->rot_mat.eulerAngles(0, 1, 2); //x, y, z angles in radians
Это правильно?Есть ли лучший способ добиться этого?