Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

cart2sph

将笛卡尔坐标转换为球面坐标

说明

示例

[azimuth,elevation,r] = cart2sph(x,y,z) 将笛卡尔坐标数组 xyz 的对应元素转换为球面坐标 azimuthelevationr

示例

全部折叠

将矩阵 xyz 中对应项定义的笛卡尔坐标转换为球面坐标 azelr。这些点对应于立方体的八个顶点。

x = [1 1 1 1; -1 -1 -1 -1]
x = 2×4

     1     1     1     1
    -1    -1    -1    -1

y = [1 1 -1 -1; 1 1 -1 -1]
y = 2×4

     1     1    -1    -1
     1     1    -1    -1

z = [1 -1 1 -1; 1 -1 1 -1]
z = 2×4

     1    -1     1    -1
     1    -1     1    -1

[az,el,r] = cart2sph(x,y,z)
az = 2×4

    0.7854    0.7854   -0.7854   -0.7854
    2.3562    2.3562   -2.3562   -2.3562

el = 2×4

    0.6155   -0.6155    0.6155   -0.6155
    0.6155   -0.6155    0.6155   -0.6155

r = 2×4

    1.7321    1.7321    1.7321    1.7321
    1.7321    1.7321    1.7321    1.7321

输入参数

全部折叠

笛卡尔坐标,指定为标量、向量、矩阵或多维数组。xyz 的大小必须相同,或者其中任意一项可以为标量。

数据类型: single | double

输出参数

全部折叠

方位角,以数组形式返回。azimuth 是从 x 轴的正向测量的在 x-y 平面中的逆时针角度,以弧度为单位。角度值在 [-pi pi] 范围内。

仰角,以数组形式返回。elevation 是与 x-y 平面之间形成的仰角,以弧度为单位。角度值在 [-pi/2, pi/2] 范围内。

半径,以数组形式返回。r 是从原点到某点的距离。r 的长度单位可以是与输入数组 xyz 的单位匹配的任意单位。

算法

从三维笛卡尔坐标到球面坐标的映射为

azimuth = atan2(y,x)
elevation = atan2(z,sqrt(x.^2 + y.^2))
r = sqrt(x.^2 + y.^2 + z.^2)

球面坐标表示法不是标准表示法。对于 cart2sph 函数而言,elevation 是从 x-y 平面进行测量的。请注意,如果 elevation = 0,则该点位于 x-y 平面中。如果 elevation = pi/2,则该点位于正 z 轴上。

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

另请参阅

| |

在 R2006a 之前推出