让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

在进行曲线求交的时候,一套很通用的方案是将曲线化为一般式再进行方程求解。对于二次方程来说,其一般式就跟我在讲矩阵的时候一样,每个项都拆开并且带上系数。用这种方程的时候,我们一般不会再关注其几何特性。

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

在上篇,我们在很标准的环境下求出了圆弧直线的圆心和半径,并且得出了它们在曲线趋于直线时均趋于无穷大这样的一个结论,所以在非数学编程语言中它们已经失去了大部分的运算能力。但是后续的很多计算却又离不开它们,因此在早期我的代码都是直线和圆弧通过if进行区别看待。而事实上通过手动运算取极限之后,不少的代码都能合并到一段代码中进行实现,它的一般方程就是一个例子。

我们把上篇用到的图和圆心半径的计算结果搬过来。

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

 

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

然后圆的标准方程是这个样子

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

于是有

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

b在分母上,所以直接展开后,b=0大概率不是实数范围内可以进行计算的方程(小概率是分母在b的部分全被抵消),所以我们先去一下分母,给等式两端同时乘以4b^2。这是极限的精粹所在,因为趋于0不代表等于0,所以这时候的去分母是成立的。

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

注:平方号内部的部分乘以2b即可。

然后我们展开,得到

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

去掉公因子4b,得到

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

化简之后发现这条方程还是蛮简单的,此时b不在分母,并且所有的函数都为连续函数,b趋于0的结果按b=0来计算即可。对左侧的b取极限,得到

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

于是方程便化为

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

它是一条跟x轴完全重合的直线。而按照凸度的定义,它就是上图中S和E的连线,正好跟我们所推导出来的方程完全吻合!

因此,需要同时处理圆弧和直线的时候,遇到方程一般式的问题,用下面的这条方程即可通吃它们,而不必再用if进行区分。

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

当然了,实际项目中起点和终点的位置多半不会摆得那么地正,所以实际项目中的方程系数看起来要比这复杂得多,但它同样具备b=0为直线,否则为圆弧的特征,并且b=0时刚好为两端点的连线。

此处我也给出S和E为任意点时一般式的6个系数,有兴趣的朋友可以自行推导或者跟我讨论,方法可以是向量运算或者用我以前的矩阵思路,推荐前者。

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

其中,sx和sy代表起点的x和y坐标,ex和ey类似。

b趋于0时,ABC都为0,另外3个系数变成

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

 

公因子-1/2去掉,得到的方程为

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

它跟我们熟知的两点式方程

让微积分穿梭于工作与学习之间(16):圆弧直线的一般方程及其在趋于直线时的极限

完全一致。

下一篇我们会给出圆弧直线在端点上的切线斜率计算,它在查找封闭图形的算法中有举足轻重的作用。