0
我试图实现使用征以下贝塞尔曲线度仰角方程库:乘以(n×m个)矩阵系数a(NX 1)矩阵明智
下面的代码段是工作来计算新的控制点。在这个代码中,degree
是来自等式的变量n
。
const size_t dimension = 3; // 2d or 3d points
const size_t degree = 3;
const size_t order = degree + 1;
// Create and fill Eigen::Matrix with original control points
Eigen::Matrix<double, order, dimension> P;
// Fill matrix with original control points. Should be degree + 1 points.
// Calculate the new control points
Eigen::Matrix<double, degree, 1> M1 = FillElevationMatrix<double, degree>();
Eigen::Matrix<double, degree, 1> M2;
M2.setOnes();
M2 -= M1;
Eigen::Matrix<double, degree, dimension> Q;
for (size_t i = 0; i < degree; ++i) {
Q.block(i, 0, 1, dimension) = (M1.row(i) * P.row(i)) + (M2.row(i) * P.row(i + 1));
}
是否有一种方法可以消除循环并一次完成计算?或者更一般地说,如何将一列标量(n x 1矩阵)乘以一个n x m矩阵,以便在一次操作中第一个矩阵的相应行乘以第二个矩阵中相应行的每个元素?。循环一次只做一行。我想是这样的:
Q = (M1 * P.block(0, 0, degree, dimension)) + (M2 * P.block(1, 0, degree, dimension));
正是我所希望的和更多!我是Eigen的新手,所以我很欣赏这些附加提示。 –