一、笛卡尔坐标与极坐标的相互转换需要用到三角形
二、笛卡尔坐标转换为极坐标
当知道一点的笛卡尔坐标 ( x , y ) (x,y) (x,y) 想转换成极坐标 ( r , θ ) (r,θ) (r,θ),需要解一个有两条已知边的直角三角形。
例子: 求 (12,5)
的极坐标?
用勾股定理去计算长的一边(斜边):
r = 1 2 2 + 5 2 = 13 r = \sqrt{12^2 + 5^2} = 13 r=122+52=13
用正切函数去计算角度:
t a n ( θ ) = 5 / 12 tan(\theta) = 5 / 12 tan(θ)=5/12
θ = t a n − 1 ( 5 / 12 ) = a r c t a n ( 5 / 12 ) = 22.6 ° (精确到一位小数) \theta = tan^{-1}(5 / 12) = arctan(5/12) = 22.6°(精确到一位小数) θ=tan−1(5/12)=arctan(5/12)=22.6°(精确到一位小数)
答案: (12,5)
的极坐标是 (13, 22.6°)
- r = ( x 2 + y 2 ) r = \sqrt{(x^2 + y^2)} r=(x2+y2)
- θ = a r c t a n ( y / x ) \theta = arctan(y/x) θ=arctan(y/x)
三、极坐标转换为笛卡尔坐标
当知道一点的极坐标 ( r , θ ) (r,θ) (r,θ),想转换为笛卡尔坐标 ( x , y ) (x,y) (x,y),需要解一个有已知斜边和角度的直角三角形:
例子: (13, 22.6°)
的笛卡尔坐标?
用 x x x 的余弦函数: c o s ( 22.6 ° ) = x / 13 cos(22.6°) = x / 13 cos(22.6°)=x/13
进一步:
x = 13 × c o s ( 22.6 ° ) = 12.002 x = 13 × cos(22.6°) = 12.002 x=13×cos(22.6°)=12.002
用 y y y 的正弦函数: s i n ( 22.6 ° ) = y / 13 sin(22.6°) = y / 13 sin(22.6°)=y/13
进一步:
y = 13 × s i n ( 22.6 ° ) = 4.996 y = 13 × sin(22.6°) = 4.996 y=13×sin(22.6°)=4.996
答案: (13, 22.6°)
的笛卡尔坐标是差不多 (12, 5)
。
所以,极坐标 ( r , θ ) (r,θ) (r,θ) 转换为笛卡尔坐标 ( x , y ) (x,y) (x,y):
- x = r × c o s ( θ ) x = r × cos(θ) x=r×cos(θ)
- y = r × s i n ( θ ) y = r × sin(θ) y=r×sin(θ)
四、总结
极坐标 ( r , θ ) (r,θ) (r,θ) 转换为笛卡尔坐标 ( x , y ) (x,y) (x,y):
- x = r × c o s ( θ ) x = r × cos(θ) x=r×cos(θ)
- y = r × s i n ( θ ) y = r × sin(θ) y=r×sin(θ)
笛卡尔坐标 ( x , y ) (x,y) (x,y) 转换为极坐标 ( r , θ ) (r,θ) (r,θ):
- r = ( x 2 + y 2 ) r = \sqrt{(x^2 + y^2)} r=(x2+y2)
- θ = a r c t a n ( y / x ) \theta = arctan(y/x) θ=arctan(y/x)
五、代码实现
笛卡尔坐标转换为极坐标
import numpy as np
r = np.sqrt(x ** 2 + y ** 2)
theta = np.arctan2(y, x)
# the result is (r, theta)
Reference
https://blog.csdn.net/weixin_36815313/article/details/109485524