ParaView Calculator atan2

时间:2016-10-19 08:29:08

标签: paraview atan2

我目前正试图使用​​ParaView计算器 - 滤波器将给定的笛卡尔坐标(x,y,z)转换为球坐标(r,theta,phi),其中theta是极角,phi是方位角。 我想做一个四分之一领域的领域:

([r_inn,r_out]中的r,[0,pi]中的theta,[0,2pi]中的phi。

到目前为止,我定义了以下给出预期结果的结果变量:

r = sqrt(coordsX ^ 2 + coordsY ^ 2 + coordsZ ^ 2)

theta = acos(coordsZ / r)

对于方位角矢量,我意识到在使用时我必须处理(x,y)的象限

phi = atan(y / x)。

这通常是使用C中的atan2之类的额外函数来实现的。这样的函数似乎不是由计算器过滤器或Python计算器过滤器提供的。

有没有简单的方法来使用图形界面实现像atan2这样的东西?

非常感谢任何评论,谢谢!

更新:

在Neil Twist指出之后,在Python计算器中,反正切函数可以被称为arctan2(y,x),我现在面临的问题是我无法访问a的坐标单元格通过变量coordsX / Y / Z,可以在简单的计算器过滤器中找到。

现在,问题是:如何在Python计算器中访问单元格坐标?

1 个答案:

答案 0 :(得分:2)

您可以在ParaView中使用Python计算器的numpy扩展,但是numpy已经调用了函数arctan2而不是atan2。

trigonometric functions的numpy文档,但令人烦恼的是你无法直接使用所有函数,例如你可以arctan2(x1, x2),但是你不能pi使用numpy.pi

对于上下文,也有PythonCalculator个文档。

要访问coordsX和coordsY有点棘手,但可以使用points变量来实现。这实际上是所有点的数组,每个点都是x,y和z坐标数组。

要使用坐标,您需要像这样提取它们:

[point[0] for point in points]
[point[1] for point in points]
[point[2] for point in points]

因此,要使用带有Y和X坐标的arctan函数,您可以执行以下操作:

arctan2([point[1] for point in points], [point[0] for point in points])

<强>更新 经过一番调查后,可能会有更好的方法来获得coordsX / Y / Z:

points[:,0]
points[:,1]
points[:,2]

arctan2(points[:,1], points[:,0])

另一个有用的参考是numpy_interface algorithms