gpt4 book ai didi

ParaView 计算器 atan2

转载 作者:行者123 更新时间:2023-12-04 02:09:22 96 4
gpt4 key购买 nike

我目前正在尝试使用 ParaView Calculator-Filter 将给定的笛卡尔坐标 (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)。

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

有没有什么简单的方法可以使用图形界面实现 atan2 之类的东西?

任何意见都非常感谢,谢谢!

更新:

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

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

最佳答案

您可以在 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 .

关于ParaView 计算器 atan2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126017/

96 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com