问题描述
我对编码非常陌生,我尝试使用 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)