簡體   English   中英

Java包,可將直角坐標轉換為極坐標

[英]Java package that converts rectangular coordinates to polar coordinates

我需要將直角坐標轉換為極坐標。 您能推薦一個我可以使用的庫嗎,我不想自己寫這個。

這用於理解天文學圖像文件中包含的元數據。

我很確定標准庫已經有了這個。 如果存在虛數類型,它們將精確地執行此操作(實數= x,imag = y,arg(val)=角度,abs(val)=半徑)。 使用數學庫(atan2,sin,cos和sqrt)也不難。

這不只是兩個功能嗎? 當然,您可以搜索任何語言並自行進行轉換。

這是我的代碼在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,以弧度為單位。

編輯:通過我的代碼,我的意思是我從某個地方偷來的一些代碼,就像一次使用。

您要的是地圖投影庫。 最受歡迎的開源庫之一是PROJ.4,並且有一個Java實現

您必須決定要使用哪種投影。 它們具有不同的屬性。 墨卡托很常見,是Google Maps所使用的一種。 墨卡托的缺點是您不能在arcitc磁極周圍使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM