matplotlib绘制贝塞尔曲线
时间: 2023-11-09 22:03:36 浏览: 76
要使用matplotlib绘制贝塞尔曲线,可以使用Python的NumPy库来计算贝塞尔曲线上的点,然后使用matplotlib绘制这些点之间的连线。以下是一个简单的例子:
```python
import numpy as np
import matplotlib.pyplot as plt
def bezier_curve(points, n=200):
t = np.linspace(0, 1, n)
polynomial_array = np.array([((1 - t) ** (len(points) - 1 - i)) * (t ** i) for i in range(len(points))])
return np.dot(points, polynomial_array)
# 定义控制点
points = np.array([[0, 0], [1, 3], [2, -1], [3, 2]])
# 计算贝塞尔曲线上的点
curve_points = bezier_curve(points)
# 绘制贝塞尔曲线
plt.plot(curve_points[0], curve_points[1])
plt.show()
```
相关问题
二维平面绘制贝塞尔曲线
绘制二维平面上的贝塞尔曲线可以使用数学库或绘图库来实现。以下是使用Python的Matplotlib库来绘制二次贝塞尔曲线的示例代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 控制点坐标
P0 = [0, 0]
P1 = [1, 3]
P2 = [4, 2]
# 计算贝塞尔曲线点坐标
t = np.linspace(0, 1, 100)
B0 = (1 - t) ** 2 * np.array(P0)
B1 = 2 * t * (1 - t) * np.array(P1)
B2 = t ** 2 * np.array(P2)
B = B0 + B1 + B2
# 绘制贝塞尔曲线
fig, ax = plt.subplots()
ax.plot(B[:, 0], B[:, 1], '-r')
ax.plot([P0[0], P1[0], P2[0]], [P0[1], P1[1], P2[1]], 'ob')
ax.set_title('Quadratic Bezier Curve')
ax.axis('equal')
plt.show()
```
在此示例代码中,我们首先定义了三个控制点P0、P1和P2,并使用np.linspace函数生成100个均匀分布的参数t。接下来,我们使用贝塞尔曲线的公式计算曲线上每个点的坐标,并将这些点绘制在二维平面上。最后,我们使用plt.subplots函数创建一个绘图窗口,使用ax.plot函数绘制贝塞尔曲线和控制点,并使用ax.set_title和ax.axis函数设置图形标题和坐标轴范围。
用python绘制三次贝塞尔曲线
要使用 Python 绘制三次贝塞尔曲线,首先需要安装 matplotlib 库。然后,可以使用以下代码:
```python
import matplotlib.pyplot as plt
import numpy as np
# 控制点
P0 = np.array([0, 0])
P1 = np.array([1, 3])
P2 = np.array([4, 4])
P3 = np.array([5, 1])
# 参数 t
t = np.linspace(0, 1, 100)
# 三次贝塞尔曲线公式
B = (1-t)**3*P0 + 3*t*(1-t)**2*P1 + 3*t**2*(1-t)*P2 + t**3*P3
# 绘制
plt.plot(B[:,0], B[:,1], 'b-', label='Bezier Curve')
plt.plot([P0[0], P1[0], P2[0], P3[0]], [P0[1], P1[1], P2[1], P3[1]], 'ro-', label='Control Points')
plt.legend()
plt.show()
```
这段代码创建了四个点作为控制点,分别是 P0、P1、P2 和 P3。然后,使用 `linspace` 函数生成 100 个值作为参数 `t`,再根据三次贝塞尔曲线公式计算出每个点的坐标,最后使用 `plot` 函数绘制出曲线和控制点。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)