平行六面体体数据的体积切片图

时间:2012-12-17 20:27:02

标签: python numpy sage

我有一个由三个向量定义的平行六面体体数据:

a 2.468000 0.000000 0.000000

b -1.234000 2.137351 0.000000

c 0.000000 0.000000 32.000000

我的网格由40 40 500点分别描述为轴a,b,c。正如您所看到的,这三个向量不是相互正交的,这会给网格的读取带来很多问题。

我最初的计划是阅读我的原始数据,然后提取几个要用sagemath处理的体积切片,以生成超级漂亮的图片。遗憾的是,我查看了python文档中的类似内容,我发现了几个可用于正交卷的命令(ndgrid,easyviz.slice_),但没有用于不相互正交的卷数据。

在Scitools包和numpy中我找到了以下命令

Numpy提供:

  • mgrid
  • ogrid
  • meshgrid

Scitools提供:

  • ndgrid
  • boxgrid

然后我也在查看matplotlib函数,但它们太多了,我只是放弃了。

是否有一些友好的程序员可以让我以正确的方式?

1 个答案:

答案 0 :(得分:2)

你到底在追求什么?

您可以轻松创建一个形状(40, 40, 500, 3)的数组,其中位置[a, b, c]的项目是一个3元素数组,其中包含相应的平行六面体网格点的x,y,z坐标,如下所示:

a = np.array([2.468000, 0.000000, 0.000000]).reshape(1, 1, 1, 3)
b = np.array([-1.234000, 2.137351, 0.000000]).reshape(1, 1, 1, 3)
c = np.array([0.000000, 0.000000, 32.000000]).reshape(1, 1, 1, 3)
A = np.linspace(0, 1, num=40).reshape(40, 1, 1, 1)
B = np.linspace(0, 1, num=40).reshape(1, 40, 1, 1)
C = np.linspace(0, 1, num=500).reshape(1, 1, 500, 1)
grid = a * A + b * B + c * C