-1

直交座標を極座標に変換する必要があります。私が使用できるライブラリをお勧めできますか。これを自分で作成する必要はありません。

これは、天文画像ファイルに含まれるメタデータを理解するために使用されます。

4

3 に答える 3

1

あなたが求めているのは、Map Projection Library です。最も人気のあるオープン ソース ライブラリの 1 つはPROJ.4で、そのJava 実装が 1 つあります。

使用するプロジェクションを決定する必要があります。それらには異なる特性があります。メルカトルは一般的であり、Google マップが使用しているものです。メルカトル図法の欠点は、北極では使用できないことです。

于 2010-04-01T20:26:24.257 に答える
1

標準ライブラリにはすでにこれがあると確信しています。虚数型がある場合、それらは正確にこれを行います (実 = x、imag = y、arg(val) = 角度、abs(val) = 半径)。数学ライブラリ (atan2、sin、cos、および sqrt) の使用もそれほど難しくありません。

于 2010-03-03T07:16:40.367 に答える
1

これは2つの関数のようではありませんか?確かに、任意の言語で検索して自分で変換できます。

C ++で長方形->極(​​他の方法は非常に簡単です)を行うための私のコードは次のとおりです

Vector3 C2P (const Vector3 &v)
{
        float PI=3.14159260f;
        Vector3 polar;
       polar.x = v.Length();

       if (v.z > 0.0f) {
              polar.y = (float) atan ( v.z/sqrt (v.x * v.x + v.y * v.y));
       }
       else if (v.z < 0.0f) {
               polar.y = (float) -atan (sqrt (v.x * v.x + v.y * v.y) / v.z);
        }
        else {

                polar.y = 0.0;
        }


        if (v.x > 0.0f) {
                polar.z = (float) atan (v.y / v.x);
        }
        else if (v.x < 0.0f) {
               polar.z = (float) atan (v.y / v.x) + PI;
        }
        else if (v.y > 0) {
                polar.z = PI * 0.5f;
      }
     else {
              polar.z = -PI * 0.5f;
        }
       //polar.z=(polar.z/M_PI)*180;
       //polar.y=(polar.y/M_PI)*180;
       return polar;
}

結果はラジアン単位で x = 長さ、y = 角度 1 z = 角度 2 であることに注意してください。

編集:私のコードとは、どこかから盗んで一度だけ使用したコードを意味します。

于 2010-03-03T07:21:07.807 に答える