如何测算圆弧的曲率半径

这要从我那天水群的时候,有个群友发的一道数学题说起。
如下图,圆的内部有4个边长为2的正方形。其中,A点是正方形的顶点,也是圆周上的1点;BC是正方形的一条边,同时B点和C点都是圆周上的1点.。求圆的半径。

这题本身没什么,只是它的解法会用到一个相当实用的方法——三点法测圆的直径。
通常我们测量圆的直径的时候,比如小的圆孔就用卡尺大概卡一下,大的圆筒、圆管的话就用卷尺大概量一下。八九不离十。但是这本质上都是在估测,算不上测量。如果只能用尺的话,三点法就是比较好的方法。
首先,在圆周上任意取3个点。用这3个点就能连成这个圆的内接三角形。
然后,测量三角形的三边边长(对圆来说就是弦长)。
到这里,测量就完成了。下面都是计算。
第一步。用余弦定理,计算任意一个内角的余弦值(对圆来说就是一根弦对应的圆周角的余弦值)。
第二步。用三角函数加法定理,计算这根弦对应的圆心角的余弦值。
第三步。在这根弦与圆心组成的等腰三角形里,用余弦定理计算出腰长,即圆的半径。

下面用数学语言说一遍。
点A、B、C是圆周上的3个点。ΔABC是圆的内接三角形。
做一个Excel表格函数很快就能算出来了。也可以用VBA构造一个函数直接调用。
我提供一个函数的VBA代码。
Function tri2r(a As Double, b As Double, c As Double) As Double
Dim cos1 As Double
Dim cos2 As Double
cos1 = (b ^ 2 + c ^ 2 - a ^ 2) / 2 / b / c
cos2 = 2 * cos1 ^ 2 - 1
tri2r = (a ^ 2 / 2 / (1 - cos2)) ^ 0.5
End Function
当然,当内接三角形是钝角三角形的时候,有可能选到的圆周角是钝角,这个时候圆心角就不是三角形的内角,是大弧对应的那个比π大的圆心角了。但是没必要做区分。因为余弦函数是轴对称的,所以这两个角的余弦值相等。
这个方法,除了比较精确以外,还有两个显著的好处。
好处一,以小测大。即使手头上的量具的量程远不及需要测的直径,也不妨碍测量。比如想测的圆管的管径至少在1米以上,而手头上只有15厘米的钢尺时,也可以测得一个小的钝角内接三角形的三边,然后计算。
好处二,可以测小的圆弧。当遇到弧度比半圆小的圆弧的时候,圆周上就找不到直径了,不可能直接测量。但是用三点法就可以测量。其实和以小测大同理。

好吧,回到最开始的题目上。
我的初中数学老师——胡柳盛老师,总是在讲完题后问一句:还有其他解法吗?我的高中物理老师——郑江良老师,总是要求我们在最后计算答案时才把具体数值代入进去。受他们的影响,比起巧妙的解法,我更喜欢通用的解法。
比如这题里面,我定义正方形的边长为a 进行计算。

首先,题面里已经给了3个圆周上的点了,所以自然地画出内接三角形ABC 。
三边里,BC就是正方形的边长。再看其他几个正方形的关系,其实AB和AC也是直角三角形的斜边。所以:
然后代入上面说的三点法计算就好了。
当然更一般的状况就是正方形的数量也不固定。当然为了维持类似的形状,需要一些限制。

定义左侧的正方形数量为m,右侧的正方形数量为n 。因为最上方的正方形被重复计数一次,所以正方形总数是m+n-1个。然后为了保持左多右少的形状,还需要规定m≥3,n≥2,且m>n。m和n都是自然数。正方形的边长是a。要做的事其实一样。
为了计算方便,令:
m+n-1=α
m-n=β
m-n+1=γ