python实现三次bezier曲线
时间: 2023-09-15 13:16:34 浏览: 56
好的,下面是 Python 实现三次 Bezier 曲线的代码:
```python
import numpy as np
import matplotlib.pyplot as plt
def bezier_curve(ctrl_points, n_points=100):
n_ctrl_points = len(ctrl_points)
t_points = np.linspace(0, 1, n_points)
curve = np.zeros((n_points, 2))
for i in range(n_ctrl_points):
curve += ctrl_points[i] * binomial_coeff(n_ctrl_points - 1, i) * \
np.power(t_points, i) * np.power(1 - t_points, n_ctrl_points - 1 - i)
return curve
def binomial_coeff(n, k):
return np.math.factorial(n) / (np.math.factorial(k) * np.math.factorial(n - k))
if __name__ == '__main__':
ctrl_points = np.array([[0, 0], [1, 5], [3, 5], [4, 0]])
curve = bezier_curve(ctrl_points)
plt.plot(curve[:, 0], curve[:, 1], '-b')
plt.plot(ctrl_points[:, 0], ctrl_points[:, 1], 'ro')
plt.show()
```
这个代码的输入是控制点列表 `ctrl_points`,输出是三次 Bezier 曲线上的点列表 `curve`。`binomial_coeff` 函数是计算二项式系数的帮助函数。运行代码后,它将绘制由 `ctrl_points` 定义的控制多边形和计算出的 Bezier 曲线。