计算向量python的旋转角度

时间:2018-11-08 02:34:39

标签: python pandas matrix rotation

我试图找到2D angle的旋转vector。我发现了一些使用3D vectors的问题。以下df代表单个vector,其中第一个row为原点。

d = ({      
    'X' : [10,12.5,17,20,16,14,13,8,7],                 
    'Y' : [10,12,13,8,6,7,8,8,9],                             
     })

df = pd.DataFrame(data = d)

我可以使用以下公式旋转向量:

angle = x
theta = (x/180) * numpy.pi

rotMatrix = numpy.array([[numpy.cos(theta), -numpy.sin(theta)], 
                         [numpy.sin(theta),  numpy.cos(theta)]])

但是我不确定如何使用上面列出的坐标在每个时间点找到angle。很抱歉使用df。它复制了我实际的dataset

1 个答案:

答案 0 :(得分:0)

首先,应将原点移动到(0, 0),然后可以使用np.arctan2()计算角度并正确定义象限。结果已经是弧度(theta),因此您不需要度(alpha)。

d = {'X' : [10,12.5,17,20,16,14,13,8,7],                
     'Y' : [10.,12,13,8,6,7,8,8,9]}
df = pd.DataFrame(data = d)

# move the origin
x = df["X"] - df["X"][0]
y = df["Y"] - df["Y"][0]

df["theta"] = np.arctan2(y, x)
df["aplha"] = np.degrees(df["theta"])
df