如何在python中将列表从极坐标转换为笛卡尔坐标?

时间:2019-12-15 16:25:34

标签: python

我有两个清单。一个包含到中心的距离,另一个包含角度。现在如何将这两个列表转换为笛卡尔坐标并将它们放在单个数组中?

例如:

distance = [10,12,10]
angle= [0,45,90]

如何将它们转换为笛卡尔坐标{x,y}坐标。它们应以[(x,y)]

的形式出现在列表中

2 个答案:

答案 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来计算sinecosine函数。

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)