将矩形坐标转换为极坐标的Java包

时间:2010-03-03 07:12:36

标签: java metadata coordinate-systems

我需要将直角坐标转换为极坐标。你能推荐一个我可以使用的库,我宁愿不用自己写这个。

用于理解天文图像文件中包含的元数据。

3 个答案:

答案 0 :(得分:1)

我很确定标准库已经有了这个。如果有虚数类型,它们就是这样的(real = x,imag = y,arg(val)= angle,abs(val)= radius)。使用数学库(atan2,sin,cos和sqrt)也不是那么困难。

答案 1 :(得分: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 = length,y = angle1 z = angle2,以弧度表示。

编辑: 根据我的代码,我的意思是我从某个地方偷走了一些代码,并且使用过一次。

答案 2 :(得分:1)

您要求的是Map Projection图书馆。最受欢迎的开源库之一是PROJ.4,其中有一个Java Implementation

您必须决定要使用的投影。他们有不同的属性。 Mercator很常见,是Google地图正在使用的版本。墨卡托的缺点是你不能在弧形杆周围使用它。