3

現在、ParaView Calculator-Filter を使用して、与えられたデカルト座標 (x、y、z) を球座標 (r、シータ、ファイ) に変換しようとしています。ここで、シータは極角、ファイは方位角です。これは、四分の一球のドメインでやりたいことです。

([r_inn, r_out] の r、[0, pi] のシータ、[0, 2pi] のファイ。

これまでのところ、期待される結果を与える次の結果変数を定義しました。

r = sqrt(座標X^2 + 座標Y^2 + 座標Z^2)

シータ = acos(座標Z/r)

方位ベクトルについては、使用するときに(x、y)の象限に注意する必要があることを認識しています

ファイ = アタン (y/x)。

これは通常、C のatan2のような追加の関数を使用して実現されます。このような関数は、Calculator Filter または Python Calculator Filter によって提供されないようです。

グラフィカル インターフェイスを使用して atan2 のようなものを実装する簡単な方法はありますか?

どんなコメントでも大歓迎です、ありがとう!

アップデート:

Neil Twist が、Python Calculator では逆正接関数を arctan2(y, x) として呼び出すことができると指摘した後、変数 coordsX/Y を介してセルの座標にアクセスできないという問題に直面しています。 /Z、単純な電卓フィルターで使用できます。

さて、問題は次のとおりです: Python 電卓でセル座標にアクセスするにはどうすればよいですか?

4

1 に答える 1

5

ParaView で Python Calculator の numpy 拡張機能を使用できますが、numpy は atan2 ではなく関数 arctan2 を呼び出しています。

三角関数のnumpyドキュメントがありますが、厄介なことに、すべての関数を直接使用することはarctan2(x1, x2)できませpinumpy.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])

もう 1 つの役立つリファレンスは、numpy_interfaceアルゴリズムです。

于 2016-10-27T11:20:23.297 に答える