问题背景:
绘制横坐标S(距离)、纵坐标V(速度)的曲线图,需要用到的是高中物理中的匀变速直线运动,总共会用得到的参数就是t(时间)、s(距离)、a(加速度)、v(速度)。总的来说就是假定在理想状况下,我只需要输入有几段限速路段,限速路段的距离(限速路段头尾相连),和其对应的限速值,加速度可以假定为0.5-1.1m/s²之类的,就可以生成总路程与其对应速度的曲线。
代码中有部分地方如果要理解的话会用到如下图的公式,但是其实我觉得可以不用看这个公式,这个我可以自己完成,还是附上方便专家们理解,有劳了。
问题举例:
输入路段全长:2000m
第一段限速路段是:0-500m ,限速值是20km/h-30km/h
第二段限速路段是:500-1500m ,限速值是30km/h-40km/h
第三段限速路段是:1500-2000m ,限速值是25km/h-35km/h
然后他就生成如图
问题要点、难点:
1、为什么是大量绘制呢?因为加速度、限速值是一个区间,如上我假定的加速度是0.5-1.1m/s²,我取的步长是0.1,这样折线图中的第一段便有6种可能了,然后车辆达到指定限速值进行匀速行驶,这里的限速值假定是取20-26km/h,步长取1,这样便又是6种可能了。6*6,在第一段限速路段便有36种可能,以此类推,每一段都有几种可能,便是这个意思。
如图我绘制的三段限速路段的图,但是我想要的是限速路段的数量是可变的,不然有四段限速路段的时候就又要改代码。
2、以下我的代码比较简单,没有考虑那么多情况,因为实力有限,见谅。我的三段是直接考虑两端加速两段减速到终点的,但实际肯定不是这样,得考虑一下,诺后面一段的限速值比前一段大或者小,那么加速度便要考虑其正负,这个判定条件我不知道该怎么写。此外,代码中间寻找加速度与速度时间之间关系,我这段可能看起来会很绕,大概就是我用速度路程加速度求出时间,我觉得不重要,我用的描点法绘制的,重要的是如何生成这些数据。
代码中我是把数据储存到数据库中绘制了,绘制步骤的代码如下:
3、有一个难点一直困惑着我,因为我一直想着是一开始就输入是几段限速,这样段数便是一个变量,然后依据我上面代码的思路,这样我的for循环嵌套也是变量,百度了好久没不知道如何去掉for循环,或者控制for循环嵌套的层数。
本人交代:
因为这是我第一段自己接触的代码,是刚学习没多久,有很多思路可能奇奇怪怪,但是我是真的诚心学习,问题如果有描述不清楚的地方,请指正,谢谢。
不管是什么回答我都会认真思考回复的,感谢。