曲率均匀变化的曲线
January 20, 2020
问题提出
2013年8月,hujunhua提问 : 由于工程上的原因,提出了一种曲率随弧长的变化率为常数的过渡曲线,用来连接两段圆弧,使得传动速度均匀变化。
虽然后来的分析表明这种曲线不能适用于两段弧的一些相对位置情况,但是,即使不为工程应用,这也不失为一个有趣而有难度的数学问题。
在这个问题中,曲率的符号需要约定。 我们约定垂直于纸面的 轴,正方向向上(指向着我们), 规定曲线弧的一个方向为弧长微分的正方向, 曲线的曲率半径的方向为从切点(密切圆与曲线)指向密切圆的圆心。 当三者构成右手系时,曲率为正,构成左手系时为负。
在实际的工程问题中,两段圆弧(及其连接端)给定了起点曲率和终点曲率,假定存在曲率均匀过渡的曲线段,那么应该不难依该曲率变化率将曲线段向两端无穷延伸。
由于曲率无穷大对应的曲率圆收缩为点,所以所谓无穷延伸,表现为收敛到两个定点,一点代表曲率负无穷大,另一点代表曲率正无穷大。
从负无穷到正无穷,中间必定经过唯一的 0 曲率点,即曲线的拐点。所以曲线大致就是如下样子:
详细内容
解答
wayne很快给出了一个极坐标微分方程 :
常数A,B,还有积分常数不知道怎么确定,胡乱设置了一下,数值积分得到的图像感觉还是比较接近的:
不过hujunhua觉得微分方程不应该这么简单,因为其中的 并非极角。他重新推导了一下,并且给出一个数值解:
以拐点为弧长参数的起点,以拐切线(x轴)为切线偏转角的起始,设弧长为s, 切线偏转角度为(在平角以内就是切线的倾角),先考虑s为正的半边。
由(为常数) 积分得 , 将曲率的定义式代入得 , 积分得到, 当时即为
我们知道圆也有简明的弧长与切线偏转角的关系式 , 这条曲线的上述关系式也很简明,与圆有得一比。
由此性质可以得到数值曲线。我们取一个很小的角度,比如 1 度,切线每转过 1 度,曲线弧的增长步长为以弦代弧就可以画出曲线了。
然后hujunhua由得到的曲线形状启示搜索“双螺线”发现这个曲线的名称为羊角螺线 ,又叫柯奴螺线,还叫欧拉双头螺线。
而zgg__ 搜索到了Cornu Spiral
wayne进一步求解, 即 又因为 所以可以设,则 于是对于曲线 的分支,有
dx =\frac{dy}p=\frac{dp}{(\tan^{-1}(p))^{\frac12}(1+p^2)^{\frac32}}\end{cases}$$ 这就是参数方程解了。 用Mathematica 竟然得到上面两个积分的原函数了:y=\sqrt{2 \pi } \text{FresnelS}(\sqrt{\frac{2}{\pi }} \sqrt{\tan ^{-1}(p)})\end{cases}$$ 换一下参数,好简洁阿:
y=\sqrt{2\pi}\text{FresnelS}(\sqrt{\frac{2\theta}{\pi}})\end{cases}$$ $\theta$ 即是前面提及的切线的倾角。 跟hujunhua前面提到的羊角螺线完全吻合! <img src="../images/clothoid/es5.png" alt="es5" /> 画出上面的参数方程的图(有意把$\theta$放大了范围),简直太有型了! <img src="../images/clothoid/es6.png" alt="es6" /> 受到启发,咱再把角度范围放大,终于得到全景图了: <img src="../images/clothoid/es7.png" alt="es7" /> hujunhua<a href="https://bbs.emath.ac.cn/forum.php?mod=redirect&goto=findpost&ptid=5130&pid=50512&fromuid=20">进一步做变量替换</a> : 将得到的 $s=\sqrt{2\lambda\theta}$ 代入公式\text{d}y=\sin\theta\cdot\text{d}s \end{cases}$$ 直接可得超级简洁的参数方程
\text{d}x=\cos\frac{s^2}{2\lambda}\cdot\text{d}s\ \text{d}y=\sin\frac{s^2}{2\lambda}\cdot\text{d}s \end{cases}$$ 然后wayne求出羊角曲线中无穷收敛点的坐标: <pre><code class="language-bash line-numbers">Integrate[cos(s^2/(2\[Lambda])),{s,0,\[Infinity]},Assumptions->\[Lambda]>0] </code></pre> $(\frac{\sqrt{\lambda\pi}}2,\frac{\sqrt{\lambda\pi}}2)$,$(-\frac{\sqrt{\lambda\pi}}2,-\frac{\sqrt{\lambda\pi}}2)$ <h2>其他</h2> 282842712474表示用<a href="https://bbs.emath.ac.cn/forum.php?mod=redirect&goto=findpost&ptid=5130&pid=54456&fromuid=20">复数计算会更加方便</a><br /> 设函数方程为$z=z(s)$,s是弧长参数,那么代入,即
即
涉及到了高斯积分了,没有明显表达式了,选择C=1,直接就得