8 Eigen::Matrix2d rotation;
9 rotation << std::cos(angle), -std::sin(angle),
10 std::sin(angle), std::cos(angle);
14 if (dimensions == 3) {
15 Eigen::Matrix3d rotation = Eigen::Matrix3d::Identity();
20 0, std::cos(angle), -std::sin(angle),
21 0, std::sin(angle), std::cos(angle);
24 rotation << std::cos(angle), 0, std::sin(angle),
26 -std::sin(angle), 0, std::cos(angle);
30 rotation << std::cos(angle), -std::sin(angle), 0,
31 std::sin(angle), std::cos(angle), 0,
38 return Eigen::MatrixXd::Identity(dimensions, dimensions);
43 if (scale_factors.empty()) {
44 return Eigen::MatrixXd::Identity(1, 1);
47 Eigen::MatrixXd scaling = Eigen::MatrixXd::Zero(scale_factors.size(), scale_factors.size());
49 auto indices = std::views::iota(
size_t { 0 }, scale_factors.size());
50 std::ranges::for_each(indices, [&](
size_t i) {
51 scaling(i, i) = scale_factors[i];