不调用库函数的前提下编程实现0阶至2阶贝塞尔函数曲线的绘制
时间: 2023-06-17 11:05:13 浏览: 99
OpenGL_Bezier,c语言实例282例源码,c语言程序
贝塞尔曲线是一种数学曲线,它通过控制点上的点来绘制平滑的曲线。0阶至2阶贝塞尔函数曲线可以通过以下方式绘制:
0阶贝塞尔函数曲线:
```python
import matplotlib.pyplot as plt
# 控制点
x = [1, 2, 3, 4, 5]
y = [2, 5, 1, 6, 3]
# 绘制控制点
plt.scatter(x, y)
# 绘制贝塞尔曲线
plt.plot(x, y, 'r--')
plt.show()
```
1阶贝塞尔函数曲线:
```python
import matplotlib.pyplot as plt
# 控制点
x = [1, 2, 3, 4]
y = [2, 5, 1, 6]
# 计算插值点
x1 = [(x[i] + x[i+1])/2 for i in range(len(x)-1)]
y1 = [(y[i] + y[i+1])/2 for i in range(len(y)-1)]
# 绘制控制点和插值点
plt.scatter(x, y)
plt.scatter(x1, y1)
# 绘制贝塞尔曲线
plt.plot(x, y, 'r--')
plt.plot(x1, y1, 'g--')
plt.show()
```
2阶贝塞尔函数曲线:
```python
import matplotlib.pyplot as plt
# 控制点
x = [1, 2, 3, 4, 5]
y = [2, 5, 1, 6, 3]
# 计算插值点
x1 = [(x[i] + x[i+1])/2 for i in range(len(x)-1)]
y1 = [(y[i] + y[i+1])/2 for i in range(len(y)-1)]
x2 = [(x[i] + 2*x[i+1] + x[i+2])/4 for i in range(len(x)-2)]
y2 = [(y[i] + 2*y[i+1] + y[i+2])/4 for i in range(len(y)-2)]
# 绘制控制点和插值点
plt.scatter(x, y)
plt.scatter(x1, y1)
plt.scatter(x2, y2)
# 绘制贝塞尔曲线
plt.plot(x, y, 'r--')
plt.plot(x1, y1, 'g--')
plt.plot(x2, y2, 'b--')
plt.show()
```
这里的插值点是通过控制点计算得出的中间点,用于绘制曲线。在1阶贝塞尔函数曲线中,插值点是通过控制点计算得出的两个点的中点;在2阶贝塞尔函数曲线中,插值点是通过控制点计算得出的三个点的中点。
阅读全文