if (mPathid == 20) { CSpline spline; for (int i = 0; i < path_plan_t.x.size(); ++i) { xyz_temp.x_axis = path_plan_t.x[i]; xyz_temp.y_axis = path_plan_t.y[i]; src_path.push_back(xyz_temp); } mPathList.clear(); mKeyPoint = 0; spline.SplinePointSet(src_path, mPathList, 0.1); // mPathList = src_path; std::cout << "receive path handle size :" << mPathList.size() << std::endl; } else { CSpline spline;//zhangyu 20220419 for (int i = 0; i < path_plan_t.x.size(); ++i) { xyz_temp.x_axis = path_plan_t.x[i]; xyz_temp.y_axis = path_plan_t.y[i]; src_path.push_back(xyz_temp); } mPathList.clear(); mKeyPoint = 0; //mPathList = src_path; spline.SplinePointSet(src_path, mPathList, 0.1);//zhangyu 20220419 }
时间: 2024-04-17 16:27:30 浏览: 100
这段代码根据`mPathid`的值进行条件判断,然后根据不同的情况使用`CSpline`类进行路径插值。
如果`mPathid`等于20,即满足条件`if (mPathid == 20)`,则执行条件块内的代码。在该条件块中,首先创建一个`CSpline`对象`spline`。
然后,使用一个循环遍历`path_plan_t.x`和`path_plan_t.y`中的元素,并将每个元素分别赋值给临时变量`xyz_temp`的`x_axis`和`y_axis`成员变量。接着,将`xyz_temp`添加到`src_path`容器中。
接下来,清空`mPathList`容器,并将`mKeyPoint`设置为0。
接着,调用`spline.SplinePointSet`函数,将`src_path`作为原始路径数据,0.1作为插值步长,生成插值后的路径,并将结果存储到`mPathList`中。
最后,输出路径处理后的大小(即插值后的路径点个数)。
如果`mPathid`不等于20,即不满足条件`if (mPathid == 20)`,则执行条件块之外的代码。在该条件块中,同样创建一个新的`CSpline`对象`spline`。
然后,使用一个循环遍历`path_plan_t.x`和`path_plan_t.y`中的元素,并将每个元素分别赋值给临时变量`xyz_temp`的`x_axis`和`y_axis`成员变量。接着,将`xyz_temp`添加到`src_path`容器中。
接下来,清空`mPathList`容器,并将`mKeyPoint`设置为0。
然后,同样调用`spline.SplinePointSet`函数,将`src_path`作为原始路径数据,0.1作为插值步长,生成插值后的路径,并将结果存储到`mPathList`中。
总结来说,这段代码根据`mPathid`的值选择不同的路径插值方式。如果`mPathid`等于20,则先清空`mPathList`,然后使用插值算法生成插值后的路径,并将结果存储到`mPathList`中。如果`mPathid`不等于20,则直接使用插值算法生成插值后的路径,并将结果存储到`mPathList`中。
阅读全文