三维直角坐标系

直角坐标(x,y,z)
image.png

球坐标系

球坐标(r,θ,φ)
θ与φ均为弧度,弧度 = 角度 * Math.PI/ 180
image.png

坐标间关系

image.png
image.png
image.png
image.png
image.png
image.png

坐标转换

直角坐标转球坐标

  1. function lglt2xyz(lng, lat, radius) {
  2. const phi = (180 + lng) * (Math.PI / 180)
  3. const theta = (90 - lat) * (Math.PI / 180)
  4. return {
  5. x: -radius * Math.sin(theta) * Math.cos(phi),
  6. y: radius * Math.cos(theta),
  7. z: radius * Math.sin(theta) * Math.sin(phi),
  8. }
  9. }

three.js

  1. lglt2xyz(lng, lat, radius) {
  2. const theta = (90 + lng) * (Math.PI / 180)
  3. const phi = (90 - lat) * (Math.PI / 180)
  4. return (new THREE.Vector3()).setFromSpherical(new THREE.Spherical(radius, phi, theta))
  5. },

球坐标转直角坐标