ParaView计算器atan2

5
我目前正在尝试使用ParaView计算器过滤器将给定的笛卡尔坐标(x,y,z)转换为球坐标(r,theta,phi),其中theta是极角,phi是方位角。我想在四分之一球体域上进行操作:
(r在[r_inn,r_out],theta在[0,pi],phi在[0,2pi])。
到目前为止,我定义了以下结果变量,以得到预期结果:
r = sqrt(coordsX ^ 2 + coordsY ^ 2 + coordsZ ^ 2)
theta = acos(coordsZ / r)
对于方位矢量,我知道在使用phi = atan(y / x)时必须注意(x,y)的象限。
通常可以使用类似于C中的atan2的额外函数来实现这一点。但是,计算器过滤器或Python计算器过滤器似乎没有提供这样的函数。
是否有任何简单的方法可以使用图形界面实现类似于atan2的函数?
非常感谢任何评论!
在Neil Twist指出Python计算器中可以使用arctan2(y, x)作为反正切函数后,我现在面临的问题是无法通过简单计算器过滤器中可用的coordsX/Y/Z变量访问单元格坐标。
现在的问题是:如何在Python计算器中访问单元格坐标?
1个回答

6
你可以在ParaView中使用Python计算器的numpy扩展,但是numpy将函数称为arctan2而不是atan2。
三角函数的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]

因此,要使用arctan函数与Y和X坐标一起使用,您可以执行以下操作:

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


嗨,首先非常感谢您指出这个问题。我已经寻找了一些文档,但是没有找到任何有用的信息。我尝试调用函数arctan2(coordsY, coordsX),但现在出现了一个错误,提示“coordsY未定义”。这些坐标名称适用于简单计算器。看来我需要为Python找到另一种替代方法。再次感谢! - ncim
@ncim,如果你不是在Python控制台(或使用pvpython或pvbatch)中编程,你可能找不到Python calc文档。至于为什么numpy必须更改名称...?! - Neil Twist
我同意命名问题,这似乎是人们容易犯错误的普遍点。如上所述,我现在面临的问题是,单元格的坐标不再通过变量coordsX、..Y、..Z可用。在PythonCalculator文档中,我读到“可以使用points变量访问点”。我可以想象我可以通过类似“points.x”的表达式获得x坐标。你知道怎么做吗? - ncim
啊,这真是让人头疼。更新一下你的问题,我会为了完整性而更新我的回答。 - Neil Twist
我对此还很新,接受意味着点击“上箭头”,对吗?当我这样做时,它说我的接受已被记录,但不会公开显示,因为我的声望少于15。 - ncim
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接