我有两个列表。一个包含与中心的距离,另一个包含角度。现在如何将这两个列表转换为笛卡尔并将它们放在一个数组中?
例如:
distance = [10,12,10]
angle= [0,45,90]
我怎样才能将它们转换为笛卡尔坐标 {x,y} 坐标。它们应该在列表中显示为 [(x,y(]
要转换为笛卡尔坐标,您需要以下等式:
x = r*cos(phi)
y = r*sin(phi)
有了这个,我们可以使用python列表推导来计算新列表:
import math
cart = [(r*math.cos(phi*math.pi/180), r*math.sin(phi*math.pi/180)) for r, phi in zip(distance, angle)]
您需要将角度转换为带有系数pi/180
弧度。
zip
函数实质上结合了这两个列表。有关实际说明,请参阅文档
您可以使用numpy 来计算sine
和cosine
函数。
import numpy as np
import math
distance = [10,12,10]
angle= [0,45,90]
coord = []
for i,j in zip(distance,angle):
coord.append((i*np.cos(math.pi*j/180), i*np.sin(math.pi*j/180)))
print(coord)