0

在我的作业中,我尝试使用贝塞尔曲线创建一个形状。我使用了贝塞尔插值法,但因为我错过了最后一条曲线,因为当我求解线性方程组时,我假设边缘的二阶导数为 0。

我想知道是否有办法绘制一个封闭的形状并连接第一个和最后一个点。到目前为止,这是我的代码。

result = np.array(result, dtype=np.float32)
P = [2 * (2 * result[i] + result[i + 1]) for i in range(len(result)-1)]
P[0] = result[0] + 2 * result[1]
P[13] = 8 * result[13] + result[14]
A = np.linalg.solve(self.C, P)
B = [0] * 14
for i in range(13):
    B[i] = 2 * result[i + 1] - A[i + 1]
B[13] = (A[13] + result[14]) / 2
for i in range(6):
    Ci = np.stack([result[i],
                   A[i],
                   B[i],
                  result[i+1],
                   ])
    multi = np.matmul(self.T3, self.M3)
    pts = np.matmul(multi, Ci)
    plt.plot(pts[:, 0], pts[:, 1])
last_A = 2*result[-1] - B[-1]
last_B = A[-1] - 2* B[-1] + 2*last_A
Ci = np.stack([result[-1],
               last_A,
               last_B,
               result[0],
               ])
multi = np.matmul(self.T3, self.M3)
pts = np.matmul(multi, Ci)
plt.plot(pts[:, 0], pts[:, 1],'b')
plt.show()
4

0 回答 0