想要对四个点进行样条插值,A(0, 0), B(5, 0),C(5, 5), D(0,5)这四个点如何进行插值得到一个类似弓形的曲线呢?
我的实现效果
import numpy as np
from scipy.interpolate import CubicSpline
import matplotlib.pyplot as plt
# 四个点的坐标
x = np.array([0, 5, 5, 0])
y = np.array([0, 0, 5, 0]) # 修改最后一个点的纵坐标为0
# 参数t用于造出平滑曲线 ,长度和x,y相等
t = np.arange(x.shape[0], dtype=float)
t /= t[-1]
# 样条插值
cs = CubicSpline(t, np.vstack([x, y]).T, bc_type='periodic')
xx, yy = cs(np.linspace(0, 1, 100)).T
# 绘制图像
plt.plot(xx, yy)
plt.axis('equal')
plt.show()
这4个点看上去是一个正方形的四个顶点,不知道你说的弓形是什么?能用画图板画一个示意图贴上来么?
如果是向内凹陷,你可以再增加一些控制点,然后再用三次插值(就好比你在 ps 里画曲线做的那样,只不过是你代码中先手工增加几个点坐标)