Python实战:基于Tkinter打造全能PDF处理工具(18大功能+源码分享)
2026/7/28 23:42:12
三次贝塞尔曲线是由4个控制点定义的参数曲线,是计算机图形学中最常用的贝塞尔曲线形式。
给定控制点 ( P_0, P_1, P_2, P_3 ),三次贝塞尔曲线的参数方程为:
其中:
端点性质
端点切线
凸包性:曲线完全位于控制点的凸包内
仿射不变性:对控制点进行仿射变换等价于对曲线进行同样变换
三次贝塞尔曲线可以用矩阵形式表示:
一阶导数(切线方向):
二阶导数:
importnumpyasnpimportmatplotlib.pyplotaspltdefcubic_bezier(t,P0,P1,P2,P3):"""计算三次贝塞尔曲线上的点"""return(1-t)**3*P0+3*(1-t)**2*t*P1+3*(1-t)*t**2*P2+t**3*P3# 控制点P0=np.array([0,0])P1=np.array([1,3])P2=np.array([4,2])P3=np.array([5,0])# 生成曲线点t_values=np.linspace(0,1,100)curve_points=np.array([cubic_bezier(t,P0,P1,P2,P3)fortint_values])# 绘图plt.figure(figsize=(8,6))plt.plot(curve_points[:,0],curve_points[:,1],'b-',label='贝塞尔曲线')plt.plot([P0[0],P1[0],P2[0],P3[0]],[P0[1],P1[1],P2[1],P3[1]],'ro--',label='控制点')plt.legend()plt.grid(True)plt.axis('equal')plt.show()| 特性 | 二次贝塞尔曲线 | 三次贝塞尔曲线 |
|---|---|---|
| 控制点数 | 3个 | 4个 |
| 多项式次数 | 2次 | 3次 |
| 灵活性 | 较低,只能形成抛物线 | 更高,可以形成S形曲线 |
| 应用 | 简单曲线 | 复杂曲线设计 |
三次贝塞尔曲线因其灵活性和平滑性,成为矢量图形和曲线设计中最重要的工具之一。