我有一条折线需要用常数来抵消。想象一条代表高速公路中心线的折线,我需要将这条中心线偏移/平行50个单位(左边和-50个单位(右边)来创建车道。
我可以使用什么功能来执行此偏移/并行转换?我相信我应该使用MatrixXd
或ArrayXd
来存储折线点?但也许有更好的对象用于存储这些?我应该使用方法transpose()
来实现我的并行操作吗?请注意,折线点是2d而不是3d。
答案 0 :(得分:1)
这真的取决于你将要用积分做什么。如果要限制行数/列数,也可以使用Matrix2Xd
或MatrixX2d
。我不知道对折线的影响,但如果你只是想为每个点添加一个常量矢量,你可以按行或按顺序添加:
#include <iostream>
#include <Eigen/Core>
using namespace Eigen;
int main()
{
MatrixXd mat(5, 2);
VectorXd vec(2);
vec << 10., 20;
mat.setRandom();
std::cout << mat << "\n\n";
mat.rowwise() += vec.transpose();
std::cout << mat << "\n\n";
return 0;
}
答案 1 :(得分:1)
您必须计算折线每个点的一阶导数(正切)。只有这样,在某一点上切线的任何平行移动才有意义。