【问题标题】:Transforming Cube Surface to Spherical Cube Surface (Generating Spherical Cube)将立方体曲面转换为球面立方体曲面(生成球面立方体)
【发布时间】:2020-07-14 19:01:33
【问题描述】:

我有一个空立方体的点坐标,如下所示:

我想做的是把那个立方体变成这样的东西:

有两种选择:

1- 编辑初始立方体的坐标使其成为球形

2- 从头开始​​生成球形立方体

到目前为止,我想不出一个解决方案。如何生成球形立方体?

编辑 - 我生成多维数据集的代码如下。它基本上创建了一个填充的立方体,然后减去内部的节点。 NL_sph 是立方体表面坐标的最终数组。


s = 0.1
m = 4
v = 3

b = np.linspace(s*(m+1),s*(m+v-1),v-1)
    
xi, yi, zi = np.meshgrid(b, b, b)
    
xi = np.array([xi.flatten('F')]).T
yi = np.array([yi.flatten('F')]).T
zi = np.array([zi.flatten('F')]).T
    
NL_inc = np.around(np.hstack([xi,yi,zi]), decimals = 5)


c = np.linspace(s*(m),s*(m+v),v+1)
    
xc, yc, zc = np.meshgrid(c, c, c)
    
xc = np.array([xc.flatten('F')]).T
yc = np.array([yc.flatten('F')]).T
zc = np.array([zc.flatten('F')]).T
    
NL_sph = np.around(np.hstack([xc,yc,zc]), decimals = 5)

for i in range(np.size(NL_inc,0)):
    
    idx = np.where((NL_sph == NL_inc[i,:]).all(axis=1))[0]
    
    if len(idx) != 0:
            
        NL_sph = np.delete(NL_sph, idx, axis = 0)

【问题讨论】:

  • 我需要将“球形立方体”上的这些点连接成正方形,就像在第二张图片中一样。这就是为什么我不能使用由 np.meshgrid 生成的常规球体。点需要像立方体一样排列,但呈球形。我用生成我的多维数据集的代码编辑了这个问题。 @RolandDeschain

标签: python python-3.x geometry transform


【解决方案1】:

在面立方体上绘制网格并将所需的每个点径向投影到球体上。假设立方体的中心在原点,变换

(x, y, z) -> (x, y, z) / √(x² + y² + z²)

【讨论】:

  • 这正是我想要的。顺便说一句,我需要将 x、y、z 坐标除以一些取决于我的网格的数字。这是因为当我只做上面的计算时,半径总是1。我不得不减小半径。
  • @MertŞölen:不用说。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
相关资源
最近更新 更多