将立方体曲面转换为球形立方体曲面(生成球形立方体)
Transforming Cube Surface to Spherical Cube Surface (Generating Spherical Cube)
我有一个空立方体的点坐标,如下所示:
我想做的是将那个立方体变成这样的东西:
有两种选择:
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)
在面立方体上绘制网格,并将您需要的每个点径向投影到球体上。假设立方体的中心在原点,transform
(x, y, z) -> (x, y, z) / √(x² + y² + z²)
我有一个空立方体的点坐标,如下所示:
我想做的是将那个立方体变成这样的东西:
有两种选择:
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)
在面立方体上绘制网格,并将您需要的每个点径向投影到球体上。假设立方体的中心在原点,transform
(x, y, z) -> (x, y, z) / √(x² + y² + z²)