7.1节描述了二维极坐标。
7.2节给出了一些极坐标比笛卡尔坐标更可取的例子。
7.3节展示了极空间如何在三维中工作,并介绍了圆柱坐标和球面坐标。
最后,7.4节明确指出,极坐标空间既可以用来描述位置,也可以用来描述矢量。
7.1 关于二维极坐标空间
极坐标空间只有一个轴(极轴),它通常被描述为来自原点的射线。在数学文献中,极轴通常在图表中指向右,因此在笛卡尔坐标系中,它对应于+x轴。
使用二维极坐标定位一个点(r, θ)
- 步骤1。从原点开始,面向极轴的方向,旋转θ角。θ的正值通常解释为平均逆时针旋转,负值则解释为顺时针旋转。
- 步骤2。现在从原点向前移动r个单位的距离。到达了极坐标(r, θ)所描述的点。
r定义了点到原点的距离,θ定义了点到原点的方向。
注意:我们喜欢用度数表示角度,但是计算机更喜欢使用弧度来表示角度。
对于任何给定的点,有无穷多个极坐标对可以用来描述这个点。这种现象被称为别名( Aliasing)。如果两个坐标对的数值不同,但指向空间中的同一点,则它们被称为彼此的别名。注意,在笛卡尔空间中不会出现别名——空间中的每个点都被分配了一个(x, y)坐标对:点到坐标对的映射是一对一的。
一般来说,对于除原点以外的任何一点(r, θ),所有作为(r, θ)别名的极坐标都可以表示为(其中k是任意整数):
( ( − 1 ) k r , θ + 180 ° ) ((-1)^kr, θ+180°) ((−1)kr,θ+180°)
一个点的最佳极坐标描述:
- r >= 0:我们不“向后”测量距离。
- −180° < θ ≤ 180度:角度限制在1/2圈,使用+180°表示朝“西”。
- r = 0 => θ = 0。在原点,把角度设为零。
将极坐标对(r, θ)转换为标准形式
- 如果r = 0,则赋值θ = 0。
- 如果r < 0,则r为负,并向θ加180°。
- 如果θ≤−180°,则将θ加360°,直到θ >−180°。
- 如果θ > 180°,则将θ减360°,直到θ≤180°。
将极坐标对(r, θ)转换为标准形式C代码:
/**
*@r: 径向距离
*@theta: 弧度为单位的角度
*/
void canonical(float &r, float &theta) {
//声明一个2 * pi (360度) 的常量
static float TWOPI = 2.0f * PI;
//检查我们是否正好在原点
if(r == 0.0f) {
//在原点,则强制theta为零
theta