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的新手,所以我很欣賞這些附加提示。 –