0

我想在 python 中设置一个旋转矩阵,我可以将我的向量旋转 5 度:

import math

angle = math.radians(5)
#define sine
sine = math.sin
#define cosine
cosine = math.cos
#rotation matrix
rotMatrix = array([[cosine(angle), -sine(angle)],
                  [sine(angle),  cosine(angle)]])

但是,当我运行程序时,我的 rotMatrix 出现错误

TypeError: must be unicode character, not list

它在以下行出错:

rotMatrix = array([[cosine(angle), -sine(angle)],
                  [sine(angle),  cosine(angle)]])

我不确定我做错了什么来得到这个错误?

4

2 回答 2

2

您将名称分配sinmath.sin(angle)sin现在是一个数字,5 度的正弦值。当您尝试拨打sin(angle)时,您正在尝试拨打一个号码。对于cos. 将矩阵更改为使用sinandcos而不是sin(angle)and cos(angle)。或者,可能是一个更好的主意,将这些变量命名为sinAcosAsin调用函数和调用变量sin是特定角度的正弦值是令人困惑的。

于 2013-10-26T20:24:49.850 回答
1

只是改变:

sin = math.sin(angle)
cos = math.cos(angle)

至:

sin = math.sin
cos = math.cos

sin(...)错误是您在声明sin为浮点数后尝试调用(math.sin(angle)返回浮点数)

编辑

我会推荐你​​使用numpy.array,而不是array.array因为似乎创建列表数组是不可能的。

或者更简单,使用列表列表,例如:

rotMatrix = [[a, b, c],
             [d, e, f],
             [g, h, i]]
于 2013-10-26T20:24:28.473 回答