1. 引言
“板凳龙”,又称“盘龙”,是我国独特的传统习俗,起源于农耕社会的祭祀活动,后演变为庆祝丰收和展示文化的舞蹈形式。其制作工艺精湛,表演形式多样,寓意着吉祥如意、团结协作和文化传承。在现代社会,村民们把一节节的板凳钻孔连接,一户一节,组成板凳长龙,可达两百多米长,非常壮观。并且板凳龙具有重要意义,不仅促进了我国的文化交流、并且丰富了国民的精神生活。
板凳龙根据参与的人数和使用的道具数量而有所不同,可以分为独凳龙和多凳龙两种基本形式。独凳龙相对简单,通常只需要一到三条板凳,由一到三个人操作。参与者会抓住板凳的两端,通过身体的移动来模拟龙的动作。多凳龙则更加复杂,需要更多的参与者和板凳。每个人负责一条板凳,首尾相连形成一条龙的形状。龙头、龙身和龙尾都有专门的人来控制。通常还会有两个人手持“宝珠”来引导龙的动作,整个队伍需要高度的协作才能完成一系列复杂的动作。
2. 问题提出与模型假设
本题的板凳龙由223节板凳组成,其中第1节为龙头,后面221节为龙身,最后1节为龙尾。所有板凳的板宽均为30 cm,龙头的板长为341 cm,龙身和龙尾的板长均为220 cm。每节板凳上打上两个孔,每个孔的直径都为5.5 cm,孔的中心距离最近的板头27.5 cm。
问题提出:在板凳龙路径设计与优化过程中,针对五个关键问题进行分析。
问题1:舞龙队由顺时针方向沿螺距为55 cm的等距螺线盘入,龙头前把手的以1 m/s的速度匀速行进,每个孔的中心均位于螺线上。求龙头从位于螺线第16圈A点处出发到300 s为止,每秒整个舞龙队的龙头、龙身和龙尾各前把手及龙尾后把手中心的位置和速度。
问题2:舞龙队根据原设定的螺线盘入,请确定舞龙队盘入的终止时刻,并求出板凳之间刚好不发生碰撞的时间,并求解出此时舞龙队的位置和速度。
问题3:在盘出过程中,舞龙队将由顺时针盘入调头切换为逆时针,为了避免龙头与龙身相撞,我们需要留出一定的距离。若调头空间是以螺线中心为圆心、直径为9 m的圆形区域,求出最小螺距,使得龙头前把手能够沿着相应的螺线盘入到调头空间的边界。
问题4:已知盘入螺线的螺距为1.7 m,盘出螺线与盘入螺线关于螺线中心呈中心对称,舞龙队在问题3设定的调头空间内完成调头,调头路径是由两段圆弧相切连接而成的S形曲线,前一段圆弧的半径是后一段的2倍,它与盘入、盘出螺线均相切。能否调整圆弧,仍保持各部分相切,求解如何使得调头曲线最短。
问题5:舞龙队沿问题4设定的路径行进,保持龙头匀速运动,求解出龙头的最大行进速度,并且使得舞龙队各把手的速度均不超过2 m/s。
模型假设:
1. 假设板凳龙的节板凳在运动过程中的龙把手中心视为质点。
2. 假设板凳之间的连接是完美的铰链连接,允许相邻板凳间存在相对转动而不考虑摩擦力或连接处的空隙。
3. 龙头前把手的运动被认为严格按照预定路径(例如等距螺旋线或S型曲线)进行,并假定其速度是恒定的或遵循特定模式变化。
4. 在碰撞检测中,板凳被简化为矩形,忽略了其厚度和局部形变。
5. 调头时的S形路径被简化为两段相切的圆弧,便于路径优化。
3. 模型的建立与求解
3.1. 问题一的建立与求解
为分析舞龙队沿螺距为55 cm螺线盘入的运动变化,首先对题目的等距螺线进行文献查阅建立螺线的极坐标,以此基础来分析龙头与各个龙身的前把手与后把手的位置以及速度。
3.1.1. 等距螺线运动轨迹模型
舞龙队沿等距螺线运动(阿基米德螺旋线),其极坐标方程为:
[1](1)
其中,A为螺线系数,
为极角,
为角度参数,B起始点到中心的距离,
为极径。可推出他的参数方程为:
(2)
由对弧长的积分公式可知:
(3)
由上面公式化简得到:
(4)
其中
为沿螺线的弧长,即从A点往内运动即在任意时刻的长度关于
值的表达式。
又因为弧长
与时间
的关系为:
(5)
由此我们可以得出任意时刻龙头前把手的位置。
接下来假设龙头前把手的位置为
,
为
的极径,后把手的位置为
,
为
的极径,龙头前把手从起始点运动到
点的角度(极角)为
,龙头后把手(下一节龙身前把手)从起始点运动到
点的角度为
,如下图1所示:
Figure 1. Diagram showing the relationship between arbitrary handle coordinates and polar angle, polar radius
图1. 任意把手坐标与极角、极径关系图
那么在螺线上任意把手的距离我们可以表示为:
(6)
由此我们可以得出前把手与后把手之间的位置关系如下:
(7)
其中
为任意两把手之间的直线距离。对其进行化简得到:
(8)
将得到的每一时刻的前把手的位置依次代入,可求得其他时刻各个龙身的位置。因为
是关于时间
的函数故对等式两边对
求偏导得到:
(9)
其中
为后把手的速度,
为前把手的速度。又因为对弧长L也是关于
的函数,而
是关于时间
的函数故可以得到:
(10)
3.1.2. 模型求解与可视化分析
基于上述所建立的螺线运动模型和设计的二分法求解算法,我们可以对问题一进行求解,在求解过程中主要包含以下步骤:
首先,确定初始化参数,由题目可知,螺距55 cm,计算螺线系数为
,龙头长度341 cm,龙身龙尾长度均为220 cm。龙头把手和其他把手的距离分别为
,
,因为螺线是从A点开始进入故它的初始角度为
[2]。
接下来我们用二分法求解龙头的微分方程[3],这个方程是龙头前把手角度
随时间
的变化,但因为龙头前把手速度恒为1 m/s,故可看作是龙头随螺线运动距离与角度
的变化:
(11)
得出龙头300 s内的位置如下图2所示:
Figure 2. Schematic diagram of the faucet’s position from the initial state to its position at 300 s
图2. 龙头从初始位置到300 s结束时的位置示意图
在用龙头前把手的位置运用公式(9)反推龙头后把手的位置(下一节龙身前把手的位置),用MATLAB运行如下图3所示:
Figure 3. Motion trajectory of the bench dragon at 300 s
图3. 板凳龙300 s是运动轨迹图
通过绘制了舞龙队在300 s内的运动轨迹。当舞龙队是以顺时针方向盘入,且龙头的轨迹为螺线且越往内圈运动起角速度就越快,即外圈角速度是慢的[4]。并得出速度关系图4所示:
Figure 4. Graph of speed versus time
图4. 速度随时间变化图
3.2. 问题二模型的建立与求解
3.2.1. 碰撞检验模型的建立
问题是由223个板凳组成的舞龙队,每个板凳具有矩形形状,其宽度和长度分别为30 cm和341 cm (龙身长为220 cm)。舞龙队沿着一条等距螺线运动,螺线的参数方程可以表示为
,其中
是径向距离,
是角度(以弧度为单位),B是初始半径,A是螺距(每转一圈半径的增加量) [5]。
运动轨迹离散化:
将舞龙队的连续运动轨迹离散化为一系列时间步长
。在每个时间步,龙头(或首个板凳)的位置更新通过解微分方程问题一的公式实现,其中
是龙头的速度。对于第i个板凳
,其角度
和径向距离
随时间t的更新可表示为:
(12)
板凳位置计算:
每个板凳的空间姿态由其前、后两个把手的位置共同确定。前把手位置可直接由阿基米德螺线方程给出,而后把手的位置需要通过求解一个非线性方程组来确定。该方程组基于板凳的固定长度约束,具体形式如下:
(13)
其中
是前把手的坐标,
和
是其对应的极径与极角,
是板凳前后把手之间的固定距离。对于后把手,我们假设其角度为
,并求解类似的方程组来找到最优的
。
碰撞检测:
采用轴对齐边界框(A1A2B1B2)碰撞检测算法。对于任意两个板凳i和j,其A1A2B1B2由四角坐标在X轴和Y轴上的最小、最大值定义[6],即表示为矩形区域为
和
。若存在以下任一条件成立,则判断为碰撞:
(14)
此外,还需检查两个矩形是否实际相交,这可能需要进一步的几何计算。
终止条件:
若在任何时间检测到碰撞即满足上述条件,则终止模拟并记录当前所有板凳的位置和速度信息。
3.2.2. 模型求解
基于上述所建立的螺线运动模型和设计的轴对齐边界框(AABB)碰撞检测算法,我们可以对问题二进行求解,在求解过程中主要包含以下步骤:
对于二维空间中的AABB,其可以表示为:
(15)
其中,
是包围盒左下角的坐标,
是包围盒右上角的坐标。
对于两个AABB (记为AABBA和AABBB),它们发生碰撞(即相交)的充分必要条件是它们在X轴和Y轴上的投影均重叠。
在X轴上,AABBA的右边界不小于AABBB的左边界,且AABBB的右边界不小于AABBA的左边界。故可以得到:
(16)
按照第一问所求每一时刻的坐标,代入代码中进行遍历求解,具体步骤如下:
1. 求出每个板凳在每一个时刻的四个顶角(后文称为四角坐标)的坐标的范围,由于我们的运动趋势是螺线型的,故我们应当考虑外层的板凳与内层板凳是否相撞。
2. 对于每一时刻,每一个板凳的四角坐标的范围我们都能得出并通过代码进行相交,通过上述的碰撞检测函数AABBB将四角坐标连接为一个矩形看相邻两个线段或者与外圈线段是否有相交的地方。如果没有那么就继续计算下一时刻的循环。
3. 当算法检测到碰撞,我们就终止循环,并记录当时的板凳的四角坐标并视为最终结果。
4. 并再次通过公式(10)以及公式(11)求出对应位置的速度。
3.2.3. 模型结果的可视化与分析
我们通过MATLAB对算法进行遍历求解得出结果如下图5所示:
由图可知,龙头在第412.6s左右会与龙身第八节相触碰,此时的队伍盘入达到终止时刻即舞龙队不能再继续盘入。
Figure 5. Collision diagram of dragon head and dragon body (data automatically rounded in the figure)
图5. 龙头与龙身碰撞图(图中数据已自动取整)
3.3. 问题三模型的建立与求解
3.3.1. 最小螺距优化模型的建立
根据题意舞龙队将会从盘入切换为盘出,且在一个直径为9 m的圆形区域中。由此我们可以得到调头空间的边界条件:
(17)
这个不等式表示当龙头坐标
满足条件时,那么可以认为他已经到达了掉头空间的边界即直径为9 m的圆形区域外的某一切点。
由题知圆与螺线相切可以得到方程:
(18)
因为在切点处r相等故可知:
(19)
可以看出,当螺距d增大时(即螺线变得更加紧密或“陡峭”),切点处的极角
会减小;反之,当螺距d减小时(即螺线变得更加稀疏或“平缓”),切点处的极角
会增大。这种关系表明,在R和B固定的情况下,切点处的极角
与螺距A是成反比的。由此作为第三问最小螺距的理论基础。
同样根据问题一,问题二的运动轨迹模型以及碰撞检测模型保证舞龙队在转弯区域内不会碰撞情况下求出最小螺距。
3.3.2. 模型求解及可视化分析
根据上述的螺距优化模型和迭代优化算法,对问题三进行求解。步骤如下:
我们对初始数据进行选取,螺距搜索我们选取的是
,0.55 m的上限为考虑到根据问题一和问题二我们可以得知在终止时刻龙头的位置已经深入进9 m直径的圆中,故取更小的螺距使得他能够达到掉头的边界条件,而下限0.4 m是考虑龙头在小螺距下会达到碰撞检验的条件[7]。
代入题目条件可知:
(20)
因为我们是顺时针运动,所有
值取负数,在调头空间是以螺线中心为圆心、直径为9 m的圆形区域时,取临界值
时得到方程:
(21)
随后我们根据上述模型对螺距进行迭代计算,在每次迭代中重复问题一和问题二的模型最后得到螺距与最小角度的关系。得到实际角度和理论角度在螺距较大的时候几乎重合,但并没有交点,也就是说此时的盘入螺线受临界条件的限制,不能以切点进入,当达到足够小的螺距时出现交点,也就意味着此时的螺距同时满足问题一和问题二的条件且满足临界值,我们取在这之后存在交点的最小值,当达到更小的螺距时,我们可以发现此时的实际角度与理论角度出现大幅度的波动,意味着螺距已经在进入临界值之前进行了碰撞。综上所述,我们取得最小的螺距为0.448 m。
3.4. 问题四模型的建立与求解
3.4.1. 建立板凳龙路径优化模型
由题知,盘出螺线与盘入螺线关于螺线中心呈中心对称,说明盘出螺线的起点为盘入螺线的终点,反之亦然。
由公式(1)可知盘入螺线可以表示为:
(22)
盘出螺线可以表示为:
(23)
题目已知两圆弧的半径前一段为后一段的2倍,且与盘入和盘出螺线相切。
其中
,假设两个圆弧的坐标为
、
,根据圆弧的几何特性和参数方程掉头曲线由两段圆弧组成,每段圆弧的起点和终点分别由给定的坐标
和
决定。
对于第一段圆弧,其方程由下式给出:
(24)
这里,
是第一段圆弧的半径,
是参数,表示圆弧上的点随时间或其他变量的变化而移动。
和
用于描述圆弧上点的坐标变化,使得点能够沿圆弧路径移动。
类似地,第二段圆弧的方程为:
(25)
要使掉头曲线与螺线相切,我们给出以下约束条件:
1、切线处的导数(切线斜率)相等:
(26)
对于第二段圆弧,其导数(切线斜率)为:
(27)
由于
,但在这个导数表达式中,半径
和
被
和
所抵消,因此两段圆弧在任意t值下的切线斜率都相同(只要
)。然而,为了确保在连接点处相切,我们需要确保在连接点
和
(分别对应第一段圆弧的终点和第二段圆弧的起点)上,切线斜率不仅相同,而且与螺线在该点的切线斜率也相同[8]。
2、在切点处的坐标相同:
(28)
既:
(29)
3、方向连续性:
掉头曲线在起点与终点的切线方向应分别与盘入螺线的终点方向和盘出螺线的起点方向一致:
(30)
其中
是盘入螺线的终止角度,
是盘出螺线的起点角度。
目标函数为:
(31)
其中,
,
,
分别为掉头的螺线的起始角度、两端圆弧的连接点角度、和结束角度。
结合问题一,问题二,问题三的约束条件,运用迭代算法进行求解。
3.4.2. 模型求解以及可视化分析
根据上述算法,我们得出板凳龙在螺线掉头时的整体路径如下图6所示:
Figure 6. Trajectory diagram of coiling-in and coiling-out spiral
图6. 盘入盘出螺线轨迹图
根据上图,我们将盘入螺线的螺距设为1.7 m,盘出螺线与盘入螺线关于螺线中心呈中心对称,调头路径是由两段圆弧相切连接而成的S形曲线,前一段圆弧的半径是后一段的2倍,它与盘入、盘出螺线均相切。我们对第三问进行优化,最终得到了最短掉头曲线为13.26 m。
3.5. 问题五模型的建立与求解
3.5.1. 最大行进速度动态优化模型
我们首先设定一个初始的龙头行进速度
,并据此计算龙头在S形路径上随时间变化的位置与速度。随后,利用龙头的运动状态作为基准,通过问题一的模型逐一推导出后续每个板凳把手在同一时刻的具体位置与速度。接下来,我们全面检查所有板凳把手的速度值,确保它们均未超出预设的速度上限。若所有速度均满足条件,则我们尝试逐步提高龙头速度
,以探索是否存在更高的速度可能性;反之,若存在速度超限情况,则相应调低龙头速度[9]。这一过程将持续迭代进行,直至我们找到并确定在满足所有速度约束条件下的最大允许龙头速度。
由问题四可以知道龙头在S形路径上的位置和速度由路径参数方程和龙头速度
决定。对于S形路径,我们可以使用分段参数方程来表示,但在这里我们假设已经有一个函数
来描述龙头的位置,且
是龙头的速度[10]。
板凳把手的位置和速度可以通过问题一和问题二中的递推关系即:
(32)
对于每个把手我们都有速度约束:
(33)
其中,
是板凳的总数。
优化目标是最大化龙头速度
,同时满足上述所有约束条件。
3.5.2. 模型求解及可视化分析
通过上述公式,我们不断调整迭代龙头速度,在不发生碰撞的前提下,我们最终得出结果如下图7所示:
Figure 7. Velocity diagram for handles with varying sections
图7. 不同节数把手的速度示意图
其中黄色线段表示限定的速度2 m/s,横坐标表示从龙头开始按顺序依次每个把手的序号,由图可知当龙头在1.248左右时,其他把手的速度无限趋近于2但始终小于2 m/s。由此我们可以确定龙头的最大速度为1.248181 m/s。
4. 模型的分析检验与应用
本文对板凳龙的运动进行了理想化建模:假设板凳为不可变形的刚性矩形结构,连接方式为无摩擦的理想铰接,并将其运动限制在二维平面内。这些简化有效降低了建模复杂度,便于实现轨迹规划、碰撞检测与速度优化的数学求解,但也忽略了实际中可能存在的弹性形变、连接间隙、三维姿态变化及人为操作误差等因素,可能影响模型在极端情况下的精度。
尽管研究对象为传统民俗活动,但所采用的分阶段建模、边界约束设定以及基于二分法的参数优化策略,具有较强的通用性。例如,在生物医学领域中,“带终止的复发事件半参数模型”同样需在多重随机过程中识别关键规律,如癌症复发伴随死亡风险的情形。此类问题常涉及对基线发生率函数的非参数估计与迭代求解,其逻辑结构与本文中螺距优化、路径搜索等过程具有一定类比性。未来可探索将此类几何优化方法的思想迁移至医学统计建模中,提升复杂数据下预测模型的计算效率与鲁棒性。
基金项目
桂林信息科技学院科学研究培育项目(XJ2024107)。
NOTES
*通讯作者。