我这里设计该函数对自身递归调用,最终返回一个曲线上的值,即递归调用最终的的停止条件为:
if (control_points.size() == 1)
{
std::cout << control_points[0].x << " " << control_points[0].y << std::endl;
return control_points[0];
}
我把这个返回值在调用处赋值给一个cv::Point2i
对象,如下:
cv::Point2i BezierPoint(0, 0);
BezierPoint = recursive_bezier(control_points, t);
std::cout << "t: " << t << " " << "x: " << BezierPoint.x << " " << "y: " << BezierPoint.y << std::endl;
并且我分别在函数内的返回值前,和调用后的地方打印输出了点的坐标,发现两者并不相同,函数内的返回值处的值是正确的,但是函数调用处的值似乎是个很奇怪的其他值。
并且,如果我用全局变量保存control_points[0]
,并在cv::Mat
中画出来,是可以正确显示结果的。
请问是不是递归调用的返回值有什么讲究呢?谢谢解答!
-
This topic was modified 4 years, 8 months ago by .J..