偏移折线乘常数

时间:2018-05-23 12:21:30

标签: c++ eigen

我有一条折线需要用常数来抵消。想象一条代表高速公路中心线的折线,我需要将这条中心线偏移/平行50个单位(左边和-50个单位(右边)来创建车道。

我可以使用什么功能来执行此偏移/并行转换?我相信我应该使用MatrixXdArrayXd来存储折线点?但也许有更好的对象用于存储这些?我应该使用方法transpose()来实现我的并行操作吗?请注意,折线点是2d而不是3d。

2 个答案:

答案 0 :(得分:1)

这真的取决于你将要用积分做什么。如果要限制行数/列数,也可以使用Matrix2XdMatrixX2d。我不知道对折线的影响,但如果你只是想为每个点添加一个常量矢量,你可以按行或按顺序添加:

#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)

您必须计算折线每个点的一阶导数(正切)。只有这样,在某一点上切线的任何平行移动才有意义。