C++ 按常量偏移多段线

C++ 按常量偏移多段线,c++,eigen,C++,Eigen,我有一条多段线,我需要用一个常数来偏移它。想象一条多段线代表一条公路的中心线,我需要偏移/平行这条中心线50个单位(向左)和-50个单位(向右)来创建车道 我可以使用什么函数来执行此偏移/并行转换?我认为我应该使用MatrixXd或ArrayXd来存储多段线点?但可能有更好的对象来存储这些点?我应该使用transpose()方法吗要实现我的并行操作?请注意,多段线点是二维的而不是三维的。这实际上取决于你还要对这些点做什么。如果你想限制行/列的数量,你也可以使用Matrix2Xd或MatrixX2

我有一条多段线,我需要用一个常数来偏移它。想象一条多段线代表一条公路的中心线,我需要偏移/平行这条中心线50个单位(向左)和-50个单位(向右)来创建车道


我可以使用什么函数来执行此偏移/并行转换?我认为我应该使用
MatrixXd
ArrayXd
来存储多段线点?但可能有更好的对象来存储这些点?我应该使用
transpose()方法吗
要实现我的并行操作?请注意,多段线点是二维的而不是三维的。

这实际上取决于你还要对这些点做什么。如果你想限制行/列的数量,你也可以使用
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;
}
#包括
#包括
使用名称空间特征;
int main()
{
MatrixXd垫(5,2);
VectorXd-vec(2);

vec必须计算一阶导数(切线)对于多段线的每一点。只有在某一点上的任何平行平移都有意义。

库可以完美地进行多段线偏移。我不认为转置或矩阵操作是合适的,因为弯曲点处的偏移将沿着弯曲角度的平分线,这对于每个弯曲都是不同的。