本帖最后由 muoubear* 于 2020-11-2 21:50 编辑
官方帮助文档关于STEP函数的表述如图1所示:
图1 STEP函数表述
官方将STEP函数称之为三阶混合函数,图1中对于STEP函数的表述译文如下:
STEP(u, xmin, ymin, xmax, ymax)
其中:
u<xmin,Step=ymin
u>xmax,Step=ymax
xmin<u<xmax, Step函数返回三阶函数值,使该点位于(xmin,ymin)和(xmax,ymax)两点之间,三阶函数在xmin和xmax处的斜率为0。
为了和软件中STEP函数的参数字符对应,并方便讲解,使用下面的表述: y =STEP(x, x0, h0, x1, h1)
其中
x,时间变量,取值范围[0,t],t为解算方案中的时间。
x0,[0, t]时间区间上某个时间点;
h0,x<x0,Step=h0;
x1,[0, t]时间区间的另一个时间点;
h1,x>x1,Step=h1;;
(x0,h0)和(x1,h1)两点之间为三次函数值,三次函数在两点处的斜率为0。
从图1可以看出STEP函数的曲线可以分为3部分: 当 x<x0时,y1=h0,y1为一段水平直线
x0<x<x1时,y2=?y2为一段拟合曲线,拟合曲线两端分别相切于两段水平直线
x>x1时,y3=h1,y3为一段水平直线
这里我们并不知道拟合曲线的方程,图1资料仅指出该曲线为三阶函数曲线,这里我们先假设该曲线为二阶函数曲线,并将两点间的拟合曲线拆分成两部分,用一元二次方程顶点式分别表示这两段曲线的方程,表述如下: y1 =h0,x∈[0, x0],y1为一段水平直线;
y2 = a*(x-x0)^2+h0,x∈[x0,x1],y2为一段开口向上的二次曲线,与y1相切于最低点(x0,h0),与y3相切于点((x0+x1)/2,(h0+h1)/2);
y3 =-a*(x-x1)^2+h1,x∈[x0,x1],y3为一段开口向下的二次曲线,与y3相切于最高点(x1,h1),与y2相切于点((x0+x1)/2,(h0+h1)/2);
y4 =h1,x∈[x1, t],y4为一段水平直线。
以上y1和y2曲线方程确定,y3和y4两段二次曲线方程系数a待求,两曲线形状完全相同,y4相当于y3绕点((x0+x1)/2,(h0+h1)/2)旋转了180度。
将已知点((x0+x1)/2,(h0+h1)/2)代入到y2,y3中,则
可得 a= 2*(h1-h0)/(x1-x0)^2
将a的值代入到y2,y3方程,则
可得 y2= 2*(h1-h0)/(x1-x0)^2 * (x-x0)^2+h0,x∈[x0,(x0+x1)/2] y3=-2*(h1-h0)/(x1-x0)^2 * (x-x1)^2+h1,x∈[(x0+x1)/2,x1]
所以整段曲线的方程可表示为: y=h0,x∈[0, x0]
•2*(h1-h0)/(x1-x0)^2 * (x-x0)^2+h0,x∈[x0,(x0+x1)/2]
•-2*(h1-h0)/(x1-x0)^2 * (x-x1)^2+h1,x∈[(x0+x1)/2,x1]
•h1,x∈[x1, t]
参考上述二次曲线的做法,我们也用方程顶点式分别表示这两段三次曲线的方程,表述如下: y1 =h0,x∈[0, x0],y1为一段水平直线;
y2 =a*(x-x0)^3+h0,x∈[x0,x1],y2为三次曲线的凹曲线部分,与y1相切于最低点(x0,h0),与y3相切于点((x0+x1)/2,(h0+h1)/2);
y3 =a*(x-x1)^3+h1,x∈[x0,x1],y3为三次曲线的凸曲线部分,与y3相切于最高点(x1,h1),与y2相切于点((x0+x1)/2,(h0+h1)/2);
y4 =h1,x∈[x1, t],y4为一段水平直线。
以上y1和y2曲线方程确定,y3和y4两段三次曲线方程系数a待求,两曲线形状完全相同,y4相当于y3绕点((x0+x1)/2,(h0+h1)/2)旋转了180度。
将已知点((x0+x1)/2,(h0+h1)/2)代入到y2,y3中,则
得 a= 4*(h1-h0)/(x1-x0)^3
将a的值代入到y2,y3方程,则 y2= 4*(h1-h0)/(x1-x0)^3 * (x-x0)^3+h0,x∈[x0,(x0+x1)/2] y3= 4*(h1-h0)/(x1-x0)^3 * (x-x1)^3+h1,x∈[(x0+x1)/2,x1]
所以整段曲线的方程可表示为: y=h0,x∈[0, x0]
•4*(h1-h0)/(x1-x0)^3 * (x-x0)^3+h0,x∈[x0,(x0+x1)/2]
•4*(h1-h0)/(x1-x0)^3 * (x-x1)^3+h1),x∈[(x0+x1)/2,x1]
•h1,x∈[x1, t]
官方帮助没有给出STEP函数(x0,h0)和(x1,h1)两点之间的曲线方程,以上关于STEP曲线方程纯属推测,下面我们在软件中进行验证。 在草图中绘制一个边长为100的正方形,正方形左下角再绘制一个直径为5的圆,如图2所示。
图2 绘制草图
选择这个圆作为连杆,选该连杆进行驱动,x方向使用多项式驱动,速度为10,y方向使用函数驱动,其STEP函数表示为: STEP(x, 1, 10, 9, 90),表示前1s时,y=10,9s后,y=90,两点间则为三次混合曲线。
对圆心创建标记并追踪,可以得到该函数的曲线轨迹,如图3所示。
图3 STEP函数曲线轨迹
|