平面运动可以分解为随基点的平动与绕基点的转动。刚体上(或其延拓平面内)每一时刻都存在一个速度为零的点,称为速度瞬心;找到它,刚体上各点速度的分布就退化为"绕瞬心的定轴转动"。本节训练三个速度工具(基点法、瞬心法、速度投影法)与动参考系下的运动合成。
上一节备好了平动与定轴转动两块积木,这一节把它们拼起来。往后的应用面极宽:四杆机构、行星齿轮、车辆悬架的运动分析都从这里出发;第 6 章讨论结构振动时,"参考系"的清晰概念也是读懂响应谱的前提。
曲柄连杆机构是教科书级样本:曲柄做定轴转动,活塞做平动,连杆做平面运动。连杆上任一点的速度等于基点速度加上绕基点转动的速度的矢量和。基点可以任选,但选速度已知的点(比如与曲柄销相连的铰点)最省事。
三种方法各有最佳射程:
| 方法 | 原理 | 适用场合 |
|---|---|---|
| 基点法 | 速度合成:基点速度 + 绕基点转动速度 | 通用,也是加速度分析的唯一选择 |
| 瞬心法 | 找速度零点,退化为绕瞬心转动 | 求多个点的速度,几何条件清晰时 |
| 速度投影法 | 同一刚体上两点速度沿连线投影相等 | 只求某点速度、杆长方向已知时 |

用数值把整个机构扫一遍,活塞速度曲线会自己浮现:
import numpy as np # 曲柄连杆:r=50 mm,L=200 mm,曲柄转速 3000 r/min r, L, n = 0.05, 0.20, 3000.0 omega = n * 2 * np.pi / 60 theta = np.linspace(0, 4 * np.pi, 721) # 活塞位移(自最远点算):x = r(1-cos) + L(1-sqrt(1-(r/L sin)^2)) lam = r / L x = r * (1 - np.cos(theta)) + L * (1 - np.sqrt(1 - (lam * np.sin(theta))**2)) # 活塞速度:dx/dtheta * omega dxdt = np.gradient(x, theta) * omega print(f"曲柄角速度 {omega:.1f} rad/s") print(f"活塞最大速度约 {np.max(np.abs(dxdt)):.2f} m/s(出现在曲柄角约 " f"{np.degrees(theta[np.argmax(np.abs(dxdt))]) % 360:.0f} 度)") print(f"曲柄销线速度 {omega*r:.2f} m/s,活塞峰值高于它——连杆转动的贡献") # 瞬心验证:theta=90 度时连杆瞬心位置 th = np.pi / 2 # 曲柄销 A=(r,0)... 这里用几何:A 速度竖直向上,B(活塞) 速度水平 # 瞬心 = 过 A 的竖直线 与 过 B 的水平线(活塞轨迹线) 的交点 A_y = r * np.sin(th) # 简化为对心机构几何 print(f"theta=90 度:过曲柄销的竖直线与活塞轨迹线的交点即瞬心,距曲柄销 {abs(A_y-0):.3f} m 量级")
值得注意的现象:活塞峰值速度高于曲柄销线速度。额外的贡献来自连杆的转动——这正是"平面运动 = 平动 + 转动"的数值证词。
站台上的人看列车上抛球,与车内乘客看同一颗球,轨迹完全不同。运动合成把这件事公式化:绝对速度 = 牵连速度 + 相对速度。工程里大量问题靠"换参考系"降维:旋转机械的叶片振动放到随叶轮旋转的坐标系里看,哥氏加速度虽然出现,但边界条件大幅简化。
一个可运行的对比实验:
import numpy as np # 传送带问题:河水流速 3 m/s(向东),船相对水速 5 m/s # 船头指向正北,求对地速度 v_water = np.array([3.0, 0.0]) v_rel = np.array([0.0, 5.0]) v_abs = v_water + v_rel print(f"船对地速度 = ({v_abs[0]:.1f}, {v_abs[1]:.1f}) m/s," f"大小 {np.linalg.norm(v_abs):.2f} m/s,方向北偏东 " f"{np.degrees(np.arctan2(v_abs[0], v_abs[1])):.1f} 度") # 换参考系:在船上看,水的速度 v_water_in_boat = v_water - v_abs print(f"船上观察:水以 {np.linalg.norm(v_water_in_boat):.1f} m/s 向南流动") # 渡河最短时间问题:船头始终垂直河岸 width = 200.0 t_cross = width / 5.0 drift = 3.0 * t_cross print(f"宽 {width} m:船头垂直河岸时 {t_cross:.0f} s 到岸,被冲下 {drift:.0f} m")
⚠️ 常见坑:加速度没有"瞬心法"。速度瞬心点的加速度一般不为零——瞬心本身在动。求加速度老老实实用基点法:未知数三个(基点加速度两个分量 + 角加速度),需要的方程也正好三个。另一个高频错误是动参考系旋转时漏掉哥氏加速度,它等于两倍牵连角速度叉乘相对速度,叶片机械、气象(信风偏转)都是它登场的舞台。
至此"怎么动"已经说清。下一章接上"为什么这么动":力出场,牛顿定律接管。
把本节工具串成一个完整收尾:对心曲柄滑块机构在曲柄角 90 度附近,用基点法求活塞加速度。连杆质心加速度等于曲柄销加速度(牵连平动)加上绕曲柄销转动贡献(切向加法向)。角速度为零的瞬间法向项消失,但切向项(角加速度乘杆长)仍在——这正是许多初学者漏掉的一项。
import numpy as np # 曲柄铅垂位:曲柄销 A 只有向心加速度;连杆角速度此瞬为零 r, L, omega = 0.05, 0.20, 314.2 a_A = omega**2 * r # 曲柄销向心加速度,指向轴心 # 连杆 AB 铅垂、活塞 B 沿水平线运动:由约束方程解连杆角加速度 alpha_AB = -a_A / L print(f"曲柄销加速度 {a_A:.1f} m/s²,连杆瞬时角速度为零但角加速度 {alpha_AB:.1f} rad/s²") print("结论:速度分析与加速度分析必须分别做,速度为零的点加速度可以很大")
速度为零、加速度不为零——瞬心点的这个特性,是"速度三件套不适用于加速度"的最好注脚,也是理解刚体瞬间换向时惯性力冲击(结合第 3 章达朗贝尔原理)的钥匙。