我有两个清单。一个包含到中心的距离,另一个包含角度。现在如何将这两个列表转换为笛卡尔坐标并将它们放在单个数组中?
例如:
distance = [10,12,10]
angle= [0,45,90]
如何将它们转换为笛卡尔坐标{x,y}坐标。它们应以[(x,y)]
的形式出现在列表中答案 0 :(得分:2)
要转换为笛卡尔坐标,您需要以下方程式:
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
函数实质上将两个列表结合在一起。有关真实的解释,请参见docs
答案 1 :(得分:1)
您可以使用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)