C++ 按常量偏移多段线
我有一条多段线,我需要用一个常数来偏移它。想象一条多段线代表一条公路的中心线,我需要偏移/平行这条中心线50个单位(向左)和-50个单位(向右)来创建车道C++ 按常量偏移多段线,c++,eigen,C++,Eigen,我有一条多段线,我需要用一个常数来偏移它。想象一条多段线代表一条公路的中心线,我需要偏移/平行这条中心线50个单位(向左)和-50个单位(向右)来创建车道 我可以使用什么函数来执行此偏移/并行转换?我认为我应该使用MatrixXd或ArrayXd来存储多段线点?但可能有更好的对象来存储这些点?我应该使用transpose()方法吗要实现我的并行操作?请注意,多段线点是二维的而不是三维的。这实际上取决于你还要对这些点做什么。如果你想限制行/列的数量,你也可以使用Matrix2Xd或MatrixX2
我可以使用什么函数来执行此偏移/并行转换?我认为我应该使用
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必须计算一阶导数(切线)对于多段线的每一点。只有在某一点上的任何平行平移都有意义。库可以完美地进行多段线偏移。我不认为转置或矩阵操作是合适的,因为弯曲点处的偏移将沿着弯曲角度的平分线,这对于每个弯曲都是不同的。