problema de coordenadas polares

problema de coordenadas polares

No entiendo cómo se interpreta un ángulo específico cuando se usan coordenadas polares. Preparé tres ejemplos en mi MWE:

    \documentclass{article}
 \usepackage{tikz}                      % TikZ and PGF picture 
     \usetikzlibrary{intersections}
     \usetikzlibrary{calc}
     \usetikzlibrary{positioning}     
 \usetikzlibrary{matrix,arrows,decorations.pathmorphing} 
 \usetikzlibrary{positioning}

\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1); \pgfgetlastxy{\XCoord}{\YCoord};}%

\begin{document}


\begin{figure}[htp]
        \begin{tikzpicture}
          \coordinate (A) at (0,0);
          \coordinate (B) at (0,1);
          \coordinate (C) at (1,1);
          \node[left, color=blue] at (A) {A};
          \node[left, color=blue] at (B) {B};
          \node[right, color=blue] at (C) {C};
          \draw (A) -- (B) -- (C);        
          \draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
                \n1={atan2(\y2-\y1,\x3-\x1)} in
                (A) -- (\n1:2cm);
          \ExtractCoordinate{B};
          \node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
          \ExtractCoordinate{C};
          \node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};          
        \end{tikzpicture} 

        \begin{tikzpicture}
          \coordinate (A) at (-90.58205pt, 119.0348pt);
          \coordinate (B) at (-90.58205pt, 133.26117pt);
          \coordinate (C) at (-40.43698pt, 119.0348pt);
          \node[left, color=blue] at (A) {A};
          \node[left, color=blue] at (B) {B};
          \node[right, color=blue] at (C) {C};
          \draw (B) -- (A) -- (C);        
          \draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
                \n1={atan2(abs(\y2-\y1), abs(\x3-\x1))} in
                (B) -- (74.161134732:2cm);
          \draw[right, color=green] (B) -- (0:2cm);
          \draw[right, color=red] (B) -- (45:2cm);        
          \ExtractCoordinate{B};
          \node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
          \ExtractCoordinate{C};
          \node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};          
        \end{tikzpicture}

        \begin{tikzpicture}
          \coordinate (A) at (2, 2); 
          \draw[right, color=green] (A) -- (0:2cm);
          \draw[right, color=red] (A) -- (45:2cm);
          \draw[right, color=blue] (A) -- (90:2cm);
          \draw[right, color=black] (A) -- (74.161134732:2cm);
        \end{tikzpicture}

\end{figure}
\end{document}
  • Primer ejemplo: todo funciona bien.
  • segundo ejemplo: problema:

En el siguiente comando:

\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C), \n1={atan2(abs(\y2-\y1), abs(\x3-\x1))} in (B) -- (74.161134732:2cm);

Intenté calcular el ángulo, así que uní B con C. Desafortunadamente, no tuve éxito. Pensé que la función atan2 funciona mal, así que reemplacé el valor en la variable \n1 por el ángulo calculado manualmente, pero nuevamente no conecté los dos puntos.

Llegué a la conclusión de que no puedo usar correctamente las coordenadas polares, así que intenté probar todo en el tercer ejemplo. Esperaba que la línea verde fuera horizontal, pero en cambio, la línea es vertical.

A modo ilustrativo adjunto una imagen:

ingrese la descripción de la imagen aquí

¿Puedes explicar dónde me equivoco?

Respuesta1

Hay dos errores en su código. El primero es matemático: los argumentos a favor atan2son losXy luego ely(Sé que esto varía de un programa a otro, por lo que es algo que siempre debes verificar cuando uses atan2funciones); Además, para obtener el ángulo correcto no debes tomar los valores absolutos ya que esto cambia al menos el cuadrante. Entonces, la sintaxis correcta para el atan2segundo ejemplo sería:

\draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
            \n1={atan2(\x3-\x1, \y2-\y1)} in
            (B) -- (\n:2cm);

La razón por la que esto no aparece en su primer ejemplo es porque ambas expresiones de coordenadas se evalúan, 1por lo que el orden no importa y tomar valores absolutos no hace nada.

Sin embargo, lo anterior todavía no es correcto y este es el segundo error. Estás dibujando una línea desde (B)hasta (\n:2cm). La segunda posición se especifica enabsolutocoordenadas y también lo es un punto en \ngrados y2cm desde el origen. Quieres que sea de (B). Para reorientar el sistema de coordenadas, debe utilizarrelativocoordenadas. Así (B) -- ++(\n:2cm)obtendrás lo que quieres.

Nuevamente, esto no aparece en el primer ejemplo porque su punto de interés, (A)en ese caso, está ubicado en el origen, por lo que las coordenadas relativas y absolutas dan la misma respuesta.

Este es el mismo error en su tercer ejemplo. La coordenada (0:2cm)es (2,0)la que está verticalmente hacia abajo desde (A)(ubicada en (2,2)). Para obtener una línea horizontal necesitas hacerla relativa: ++(0:2cm).

Código completo:

\documentclass{article}
 \usepackage{tikz}                      % TikZ and PGF picture 
     \usetikzlibrary{intersections}
     \usetikzlibrary{calc}
     \usetikzlibrary{positioning}     
 \usetikzlibrary{matrix,arrows,decorations.pathmorphing} 
 \usetikzlibrary{positioning}

\newdimen\XCoord
\newdimen\YCoord
\newcommand*{\ExtractCoordinate}[1]{\path (#1);
\pgfgetlastxy{\XCoord}{\YCoord};}%

\begin{document}


\begin{figure}[htp]
        \begin{tikzpicture}
          \coordinate (A) at (0,0);
          \coordinate (B) at (0,1);
          \coordinate (C) at (1,1);
          \node[left, color=blue] at (A) {A};
          \node[left, color=blue] at (B) {B};
          \node[right, color=blue] at (C) {C};
          \draw (A) -- (B) -- (C);        
          \draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
                \n1={atan2(\y2-\y1,\x3-\x1)} in
                (A) -- (\n1:2cm);
          \ExtractCoordinate{B};
          \node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
          \ExtractCoordinate{C};
          \node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};          
        \end{tikzpicture} 

        \begin{tikzpicture}
          \coordinate (A) at (-90.58205pt, 119.0348pt);
          \coordinate (B) at (-90.58205pt, 133.26117pt);
          \coordinate (C) at (0pt, 119.0348pt);
          \node[left, color=blue] at (A) {A};
          \node[left, color=blue] at (B) {B};
          \node[right, color=blue] at (C) {C};
          \draw (B) -- (A) -- (C);        
          \draw [color=cyan] let \p1=(A), \p2=(B), \p3=(C),
                \n1={atan2(\x3-\x1,\y1-\y2)} in
                (B) -- ++(\n1:4cm);
          \draw[right, color=green] (B) -- ++(0:2cm);
          \draw[right, color=red] (B) -- ++(45:2cm);        
          \ExtractCoordinate{B};
          \node [below] at (1cm,-2cm) {B $(\XCoord,\YCoord)$};
          \ExtractCoordinate{C};
          \node [below] at (1cm,-2.5cm) {C $(\XCoord,\YCoord)$};          
        \end{tikzpicture}

        \begin{tikzpicture}
          \coordinate (A) at (2, 2); 
          \draw[right, color=green] (A) -- ++(0:2cm);
          \draw[right, color=red] (A) -- ++(45:2cm);
          \draw[right, color=blue] (A) -- ++(90:2cm);
          \draw[right, color=black] (A) -- ++(74.161134732:2cm);
        \end{tikzpicture}

\end{figure}
\end{document}

Resultado:

coordenadas polares relativas

información relacionada