技术经验解读:三维空间中直角坐标与球坐标的相互转换

简介: 技术经验解读:三维空间中直角坐标与球坐标的相互转换

三维直角坐标系


三维直角坐标系是一种利用直角坐标(x,y,z)来表示一个点 P 在三维空间的位置的三维正交坐标系。


注:本文所讨论的三维直角坐标系,默认其x-轴、y-轴、z-轴满足右手定则(如右图所示)。


在三维空间的任何一点 P ,可以用直角坐标(x,y,z)来表达其位置。如左下图显示了三维直角坐标的几何意义:点P在x-轴、y-轴、z-轴上的投影距离分别为x、y、z。如右下图所示,两个点 P 与 Q 的直角坐标分别为(3,0,5)与(-5,-5,7) 。


球坐标系


球坐标系是一种利用球坐标(r,θ,φ)来表示一个点 P 在三维空间的位置的三维正交坐标系。


下图描述了球坐标的几何意义:原点O与目标点P之间的径向距离为r,O到P的连线与正z-轴之间的夹角为天顶角θ,O到P的连线在xy-平面上的投影线与正x-轴之间的夹角为方位角φ。


假设 P 点在三维空间的位置的三个坐标是 。那么, 0 ≤ r 是从原点到 P 点的距离, 0 ≤ θ ≤ π 是从原点到 P 点的连线与正 z-轴的夹角, 0 ≤ φ < 2π 是从原点到 P 点的连线在 xy-平面的投影线,与正 x-轴的夹角。当 时, 与 都一起失去意义。当 或 时, 失去意义。


三维空间下//代码效果参考:http://www.lyjsj.net.cn/wz/art_22834.html

直角坐标与球坐标的相互转换

直接坐标转球坐标





球坐标转直角坐标





基于Flex的坐标转换实现


直角坐标定义类CartesianCoord.cs


?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849package hans_gis.coord{ public class CartesianCoord { public var x:Number; public var y:Number; public var z:Number; static private var temp:CartesianCoord = CartesianCoord.ZERO; public function CartesianCoord(x:Number=0, y:Number=0, z:Number=0) { this.x = x; this.y = y; this.z = z; } public function //代码效果参考:http://www.lyjsj.net.cn/wz/art_22832.html

clone():CartesianCoord { return new CartesianCoord(this.x, this.y, this.z); } public function copyTo(n:CartesianCoord):void { n.x = this.x; n.y = this.y; n.z = this.z; } public function copyFrom(n:CartesianCoord):void { this.x = n.x; this.y = n.y; this.z = n.z; } public function reset(newx:Number = 0, newy:Number = 0, newz:Number = 0):void { this.x = newx; this.y = newy; this.z = newz; } static public function get ZERO():CartesianCoord { return new CartesianCoord(0, 0, 0); } }}

球坐标定义类SphericalCoord.cs


?package hans_gis.coord{ public class SphericalCoord { public var radius:Number; public var theta:Number; public var phi:Number; static private var temp:SphericalCoord = SphericalCoord.ZERO; public function SphericalCoord(radius:Number=0, theta:Number=0, phi:Number=0) { this.radius = radius; this.theta = theta; this.phi = phi; } public function clone():SphericalCoord { return new SphericalCoord(this.radius, this.theta, this.phi); } public function copyTo(n:SphericalCoord):void { n.radius = this.radius; n.theta = this.theta; n.phi = this.phi; } public function copyFrom(n:SphericalCoord):void { this.radius = n.radius; this.theta = n.theta; this.phi = n.phi; } public function reset(newradius:Number = 0, newtheta:Number = 0, newphi:Number = 0):void { this.radius = newradius; this.theta = newtheta; this.phi = newphi; } static public function get ZERO():SphericalCoord { return new SphericalCoord(0, 0, 0); } }}


坐标转换定义类CoordsTransform.cs


?package hans_gis.coord{ public class CoordsTransform { public function CoordsTransform() { } public function CartesianToSpherical(coord:CartesianCoord):SphericalCoord{ var radius = this.GetModuloFromCartesianCoord(coord); var theta = this.GetThetaFromCartesianCoord(coord); var phi = this.GetPhiFromCartesianCoord(coord); return new SphericalCoord(radius, theta, phi);<div class="line number14 index13

相关文章
|
定位技术 图形学
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
243 1
|
3月前
|
算法框架/工具 C++ Python
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
根据相机旋转矩阵求解三个轴的旋转角/欧拉角/姿态角 或 旋转矩阵与欧拉角(Euler Angles)之间的相互转换,以及python和C++代码实现
229 0
|
5月前
|
计算机视觉
图像处理之给定任意四点不规则放缩
图像处理之给定任意四点不规则放缩
30 3
|
3月前
|
C++
C++代码来计算一个点围绕另一个点旋转45度后的坐标
C++代码来计算一个点围绕另一个点旋转45度后的坐标
76 0
|
3月前
|
算法 数据建模
平面中判断点在三角形内算法(重心法)
平面中判断点在三角形内算法(重心法)
45 0
|
5月前
|
知识图谱 C++
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
大学物理-实验篇——用拉伸法测定金属丝的杨氏(弹性)模量(胡克定律、杨氏模量、平面反射镜、三角函数、螺旋测微器)
302 0
|
算法 JavaScript 前端开发
84坐标系、02坐标系、百度坐标之间相互转换算法
最近有同学反馈之前的坐标系转换有问题,对之前的工具类进行了修正。 一、地图坐标转换java工具类 包含84坐标系、02坐标系、百度地图、高德地图、腾讯地图坐标之间相互转换的算法 wgs84ToGcj02:将 WGS84 坐标系下的经纬度转换为 GCJ02 坐标系下的经纬度。 gcj02ToWgs84:将 GCJ02 坐标系下的经纬度转换为 WGS84 坐标系下的经纬度。 gcj02ToBd09:将 GCJ02 坐标系下的经纬度转换为 BD09 坐标系下的经纬度。 bd09ToGcj02:将 BD09 坐标系下的经纬度转换为 GCJ02 坐标系下的经纬度。
1085 0
84坐标系、02坐标系、百度坐标之间相互转换算法
地图学的基础知识_天文坐标系_大地坐标系_地心坐标系及其相关概念
地图学的基础知识_天文坐标系_大地坐标系_地心坐标系及其相关概念
269 0
|
11月前
|
机器人 C# 图形学
C# | [极坐标] 与 [平面直角系坐标] 的相互转换
极坐标和平面直角系坐标是常见的坐标系统,它们在不同的应用场景中都有重要的作用。而在计算机图形学、物理模拟和机器人控制等领域,我们经常需要在极坐标和平面直角系坐标之间进行转换。
185 2
C# | [极坐标] 与 [平面直角系坐标] 的相互转换