说话人1: 先问你个事儿,你坐过山车的时候,有没有想过一个问题——轨道到底是怎么"弯"的?
说话人2: 这还用想?用眼睛看就知道弯了呗。
说话人1: 眼睛能看,但数学不答应。你说一条曲线"很弯",到底多弯算弯?直线和圆的弯法有什么不一样?到了三维空间里,一条曲线不光能弯,还能"拧",像弹簧那样拧着往前走,这又该怎么量?
说话人2: 哦——所以今天是要把"弯"和"拧"都变成数字?
说话人1: 没错。今天聊的空间曲线局部结构,还有弗雷内-塞雷理论,内容整理自李坚毅博士的创作,他就是用一套数学语言,把曲线的一举一动全给算明白了。
说话人2: 那从哪儿开始?
说话人1: 从给曲线"上户口"开始。数学里描述曲线,得先写参数方程:让一个参数t带着走,t一变,x、y、z三个坐标跟着变,曲线就画出来了。比如平面上的圆,写成r(t)等于括号R乘以cos t,逗号,R乘以sin t。
说话人2: 等等,为什么非要参数化?直接说"一个圆"不行吗?
说话人1: 因为"一个圆"是几何直觉,参数方程才是能求导、能计算的东西。不过光写出来还不够,得满足两个条件:第一叫光滑,就是各分量函数的导数连续,曲线上没有折角;第二叫正则,要求速度向量r撇(t)处处不等于零向量。
说话人2: 速度为零会怎么样?
说话人1: 你就想汽车一脚刹车踩停又原地起步,那个点上车头到底朝哪儿?说不清楚。数学上也一样,速度归零的地方会冒出尖点、折返点,切线方向没法唯一确定。你看那个圆,求导得到速度向量是负R sin t、R cos t,它的模长恒等于R,永远不为零,所以圆是最标准的光滑正则曲线。
说话人2: 好,曲线能写出来了。可这个参数t是我随便选的啊,我让t走快一点、慢一点,曲线还是那条曲线,量出来的东西会不会跟着变?
说话人1: 问到点子上了。所以要换一个"天生公平"的参数——弧长。弧长s的算法,是把速度向量的模长从起点积分到当前位置;说白了就是把每一瞬时的速率乘以微小的时间片段,全加起来,得到质点走过的总路程。因为曲线正则,速率恒正,所以s是t的严格单调递增函数,可以反解出t等于t(s),从此曲线改用s来描述。
说话人2: 用弧长当参数,好处到底是什么?
说话人1: 好处大了。用链式法则一算,dr比ds等于r撇(t)除以它自己的模长——右边就是单位化之后的切向量,模长恒等于1。意思是,按弧长参数走,相当于质点以恒定的单位速率沿曲线运动,不快不慢。所以弧长叫曲线的"自然参数",它完全由曲线自身的形状决定,跟你怎么选参数毫无关系。
说话人2: 有了公平的参数,该说说怎么量"弯"了吧?
说话人1: 曲率。想法特别朴素:在曲线上取两个点,弧长差是Δs,两点切线方向的夹角是Δφ,曲率就是夹角对弧长的变化率取极限,也就是k等于dφ比ds的绝对值。直线的切线方向永远不变,夹角为零,曲率就是零;弯得越急,切线转得越快,曲率越大。
说话人2: 曲率有没有什么看得见摸得着的几何形象?
说话人1: 有,密切圆。曲线上每个点都贴着一个跟它吻合得最好的圆,二阶贴合,就像圆和曲线在那个点轻轻"亲吻"了一下。这个圆的半径R跟曲率是严格的反比关系:k等于R分之一。弯得越狠,密切圆越小;曲率趋近于零,半径趋于无穷大,圆就摊平成了直线。而且用弧长参数的时候,曲率直接等于二阶导数r两撇(s)的模长,算起来特别干脆。
说话人2: 说到这儿我得插一句,这一套从参数化到曲率的整理思路,李博士梳理得特别顺:局部拿切线做一阶近似、拿密切圆做二阶近似,再复杂的曲线,在每一小段都被简单模型"接管"了。
说话人1: 对,这就是微分几何的核心方法论。不过平面曲线待在二维里,弯来弯去都在一张纸上;空间曲线能脱离平面往三维里钻,光有曲率就不够用了。
说话人2: 因为它还会"拧"?
说话人1: 正是。先认识一个平面,叫密切平面:过曲线上一点P有无数个平面,其中有这么一个平面,当邻近点Q无限靠近P时,Q到这个平面的距离除以弧长增量的平方,极限等于零——也就是说误差是比弧长平方更高阶的无穷小。这个平面就是对曲线局部拟合得最准的平面,曲线在极小范围内几乎就"躺"在里面。
说话人2: 这个平面由谁张成?
说话人1: 两个向量。一个是单位切向量T,就是r撇(s),指着前进方向;另一个叫主法向量N,等于r两撇(s)除以它的模长,也就是T撇除以曲率k,它永远指向曲线弯曲的内侧,而且跟T垂直。T和N一搭,密切平面就出来了。再让T叉乘N,得到第三个向量——副法向量B,它垂直于密切平面。T、N、B两两垂直、长度都是1,还满足右手螺旋法则,这就是跟着曲线一起走的"弗雷内活动标架",相当于一个随身坐标系。
说话人2: 等等,你说密切平面会"跟着走",它在空间里还会变?
说话人1: 问得太好了。平面曲线的密切平面从头到尾就是那张纸,纹丝不动;空间曲线的密切平面会一路走一路转。描述这个转动快慢的量,就是挠率,符号是τ。几何上,挠率的绝对值等于副法向量的转角对弧长的变化率;解析上说,B对s求导等于负的τ乘以N。而且挠率是带符号的:右手螺旋往上拧的为正,左手螺旋往下拧的为负。平面曲线根本不扭,挠率恒为零。
说话人2: 能不能来个实打实算一遍的例子?
说话人1: 来,看圆柱螺旋线,就是弹簧的形状,参数方程写成a cos t、a sin t、b t。先求速度向量:负a sin t、a cos t、b,模长是根号下a平方加b平方,记为c,于是弧长s就等于c乘以t。切向量单位化之后再对s求导、取模长,算出来曲率k等于a除以a平方加b平方的和;挠率τ等于b除以a平方加b平方的和。
说话人2: 两个居然都是常数?
说话人1: 对,螺旋线的曲率和挠率都是常数,所以它弯得均匀、拧得也均匀,名副其实的"螺旋"。咱们代个数进去:让a等于3、b等于4,那c就是5——勾股数都冒出来了。曲率等于3除以25,零点一二;挠率等于4除以25,零点一六。你看,一根弹簧的"弯"和"拧",就这么变成了两个小数。也难怪李博士把弹簧作为这里的关键例子,一个例子把曲率和挠率全演示了。
说话人2: 这倒是把我对弹簧的感性认识彻底给数字化了。
说话人1: 有了标架,有了曲率和挠率,压轴的就是弗雷内-塞雷公式,一共三句话。第一,切向量T的导数等于曲率k乘以主法向量N,切线的转动由曲率管;第二,主法向量N的导数等于负k乘以T加上τ乘以B,曲率把它往切线方向拉,挠率把它往副法方向推;第三,副法向量B的导数等于负τ乘以N,密切平面转动的快慢和方向由挠率管。
说话人2: 写成矩阵形式的话,系数矩阵有什么说法?
说话人1: 反对称矩阵——对角线全是零,关于对角线对称的位置互为相反数。这个结构不是巧合:它保证标架一边往前走,一边始终保持单位长度、保持两两垂直,整体运动就像刚体在空间里平移加旋转,架子永远不会散。
说话人2: 那反过来呢?知道曲率和挠率,能把曲线还原出来吗?
说话人1: 这就是曲线论基本定理:只要给定曲率函数k(s)连续且恒正、挠率函数τ(s)连续,那么除了空间中的刚体平移和旋转之外,对应的曲线唯一存在。换句话说,k(s)和τ(s)就是一条曲线的完整DNA——你根本不用看见那条曲线,拿到这两个函数,它长什么形状就已经注定了。
说话人2: 从圆到弹簧,从切线到DNA,今天这趟曲线之旅挺过瘾。
说话人1: 那就借李坚毅博士整理这部分内容时的一句话收尾——所谓局部近似,就是在看不懂整个世界的时候,先认认真真看清脚下这一小段;切线和密切圆是这样,弗雷内标架也是这样,人认识复杂事物的办法,其实一直都没变。
说话人2: 说得好。从曲线再往前走就是曲面,曲率会分裂成高斯曲率和平均曲率,活动标架也会跟着升级,一路通向黎曼几何。
说话人1: 咱们下期接着聊。

