如何用 Python 绘制贝塞尔线?

问题描述

我对编码非常陌生,我尝试使用 Python 以一种简单的方式绘制一条贝塞尔曲线。到目前为止我所做的如下

import numpy as np
A=(10,20)
B=(30,40)
C=(5,60)
t=np.arange(0.0,1.0,0.1)
P0 = A * t + (1 - t) * B
P1 = B * t + (1 - t) * C
Pfinal = P0 * t + (1 - t) * P1
print(Pfinal)

但我收到的错误

   line 6,in <module>
   P0 = A * t + (1 - t) * B
   ValueError: operands Could not be broadcast together with shapes (2,) (10,)

有什么想法吗?

解决方法

这里有一些提示:

步骤 1) 仔细检查您的类型。 您将 A、B、C 设置为 元组,并且您正在尝试对未正确解释的元组执行矩阵乘法。 因此,首先将 A、B、C 定义为 数组

A = np.array([10,20])
B = np.array([30,40])
C = np.array([5,60])

步骤 2) 设置正确的形状 A,B,C 是一维数组。按如下方式重塑它们:

A = A.reshape(2,1)
B = B.reshape(2,1)
C = C.reshape(2,1)

第 3 步)用 linspace 创建 t 并重塑它

t = np.arange(0.0,1.0,0.1).reshape(1,-1)

第 4 步)进行乘法运算

P0 = A * t + (1 - t) * B
P1 = B * t + (1 - t) * C
Pfinal = P0 * t + (1 - t) * P1
print(Pfinal)