代码之家  ›  专栏  ›  技术社区  ›  Etan bbum

从笛卡尔坐标到对数极坐标的转换

  •  0
  • Etan bbum  · 技术社区  · 14 年前

    我想把笛卡尔坐标系中的点坐标转换成对数极坐标系。

    但是,我不知道如何很好地执行atan操作。

    目前,我正在做的如下,这似乎是相当丑陋。

       Xlp = zeros(n, 2);
       Xlp(:, 1) = log(sqrt(Xt(:, 1).^2 + Xt(:, 2).^2));
       sel = Xlp(:, 1) >= 0 && Xlp(:, 2) >= 0;
       Xlp(sel, 2) = atan(Xt(sel, 2) / Xt(sel, 1));
       sel = Xlp(:, 1) >= 0 && Xlp(:, 2) < 0;
       Xlp(sel, 2) = repmat(2*pi, size(sel), 1) + atan(Xt(sel, 2) / Xt(sel, 1));
       sel = Xlp(:, 1) < 0 && Xlp(:, 2) >= 0;
       Xlp(sel, 2) = repmat(pi, size(sel), 1) + atan(Xt(sel, 2) / Xt(sel, 1));
       sel = Xlp(:, 1) < 0 && Xlp(:, 2) < 0;
       Xlp(sel, 2) = repmat(pi, size(sel), 1) + atan(Xt(sel, 2) / Xt(sel, 1));
    

    输入点在Xt中,第一列是X坐标值,第二列是Y坐标值。Xlp包含对数极坐标,第一列对应于距离,第二列对应于角度。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Oliver Charlesworth    14 年前

    使用 atan2() 为你做这些艰苦的工作。

        2
  •  3
  •   Marin    14 年前

    我会的

    [THETA,RHO] = cart2pol(X,Y)
    RHO=log(RHO)
    

    ?