【问题标题】:How do I reverse this formula which creates a spherical coordinate?如何反转这个创建球坐标的公式?
【发布时间】:2015-06-17 13:37:14
【问题描述】:

我有一个公式可以将空间中的一个随机点映射到球体中的一个点。我希望能够反转这个公式,再次得到空间中的随机点。

我下面的unspherize() 功能不起作用。请告诉我反转表格的正确方法。

function spherize(x,y,z){
  var d = 1 / Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2));
  x *= d;
  y *= d;
  z *= d;
  return {x: x, y: y, z: z}
}

function unspherize(x,y,z){
  var d = 1 * Math.pow(Math.sqrt(x) + Math.sqrt(y) + Math.sqrt(z), 2)
  x /= d;
  y /= d;
  z /= d;
  return {x: x, y: y, z: z}
}

【问题讨论】:

    标签: math three.js


    【解决方案1】:

    有无数个点映射到球体上的同一点(例如,对于每个 (x,y,z),点 (2x,2y,2z) 都映射到同一个向量)。因此,如果不保存向量长度 d,则运算是不可逆的。

    【讨论】:

      【解决方案2】:

      使用r作为点(x,y,z)的半径或欧几里得范数,

      x /= 1+r
      y /= 1+r
      z /= 1+r
      

      给你一个球内的点。由于这种变换是双射的,因此可以反转,对于球内的任何点,“未球化”的点为

      x/= 1-r
      y/= 1-r
      z/= 1-r
      

      【讨论】:

        猜你喜欢
        • 2017-11-13
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 2017-09-30
        • 1970-01-01
        • 2020-12-21
        • 2019-05-12
        • 1970-01-01
        相关资源
        最近更新 更多