Definizione delle coordinate di un punto in TikZ

  • Creatore
    Topic
  • #78796
    Up
    0
    Down
    ::


    Ciao a tutti,

    supponiamo che stia facendo un disegno con [tt]TikZ.[/tt] Definisco le coordinate di due punti in questo modo:
    `\coordinate (a) at (3,7);
    \coordinate (b) at (5,9);`
    Supponiamo che a questo punto voglia definire le coordinate di un terzo punto, la cui ascissa è quella di [tt]a[/tt] e la cui ordinata è quella di [tt]b.[/tt] Qual è il modo più veloce ed elegante per farlo?

    Grazie e buona giornata,
    Marco.

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #78797
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        Marco87″ post=77902Ciao a tutti,

        supponiamo che stia facendo un disegno con [tt]TikZ.[/tt] Definisco le coordinate di due punti in questo modo:
        `\coordinate (a) at (3,7);
        \coordinate (b) at (5,9);`
        Supponiamo che a questo punto voglia definire le coordinate di un terzo punto, la cui ascissa è quella di [tt]a[/tt] e la cui ordinata è quella di [tt]b.[/tt] Qual è il modo più veloce ed elegante per farlo?

        Grazie e buona giornata,
        Marco.

        Secondo me la cosa più semplice è usare la geometria:
        `\documentclass{standalone}
        \usepackage{tikz}
        \usetikzlibrary{calc}

        \begin{document}
        \begin{tikzpicture}
        \draw [help lines] (0,0) grid (6,10);

        \coordinate (a) at (3,7);
        \coordinate (b) at (5,9);

        \coordinate (a0) at ($(a) + (0,1)$);
        \coordinate (P) at ($(a)!(b)!(a0)$);

        \fill[orange] (a) circle (2pt);
        \fill[red] (b) circle (2pt);
        \fill[blue] (P) circle (4pt);
        \end{tikzpicture}
        \end{document}`

        Altrimenti si cambia e si usa METAPOST.
        Saluti.
        R.

      • #78798
        Up
        0
        Down
        ::

        Marco87″ post=77902Ciao a tutti,

        supponiamo che stia facendo un disegno con [tt]TikZ.[/tt] Definisco le coordinate di due punti in questo modo:
        `\coordinate (a) at (3,7);
        \coordinate (b) at (5,9);`
        Supponiamo che a questo punto voglia definire le coordinate di un terzo punto, la cui ascissa è quella di [tt]a[/tt] e la cui ordinata è quella di [tt]b.[/tt] Qual è il modo più veloce ed elegante per farlo?

        Grazie e buona giornata,
        Marco.

        Ciao,

        mi vengono in mente due metodi, ma il primo è quello ovvio: a mano. 😀
        `
        \documentclass{article}

        \usepackage{tikz}
        \usetikzlibrary{calc}

        \begin{document}

        Metodo più veloce: a mano!
        \begin{center}
        \begin{tikzpicture}
        \coordinate (a) at (3,7);
        \coordinate (b) at (5,9);
        \coordinate (c) at (3,9);

        \node at (a) {A};
        \node at (b) {B};
        \node at (c) {C};
        \end{tikzpicture}
        \end{center}

        Metodo elegante.
        \begin{center}
        \begin{tikzpicture}
        \coordinate (a) at (3,7);
        \coordinate (b) at (5,9);

        \node at (a) {A};
        \node at (b) {B};
        \draw let \p1=(a), \p2=(b) in (\x1,\y2)–(\x1,\y2) node {C};
        \end{tikzpicture}
        \end{center}

        \end{document}`

        Il secondo sostanzialmente partendo dalle coordinate di (a) e (b) salvate in due punti \p1 e \p2 permette di riferirsi ad ascissa e coordinata con (\x1,\y1) per \p1 ed (\x2,\y2) per \p2. Quindi poi basta scambiarle e il gioco è fatto. Purtroppo la sintassi non si può usare direttamente per i nodi, ma solo mentre si realizza un segmento: per questo con il piccolo trucchetto di disegnare un segmento di lunghezza nulla si può inserire il nodo nella posizione voluta.

        Ciao
        Claudio

      • #78799
        Up
        0
        Down
        ::


        Basta fare:
        `\begin{tikzpicture}
        \coordinate (a) at (3,7);
        \coordinate (b) at (5,9);
        \coordinate (c) at (a |- b);
        \node at (a) {A};
        \node at (b) {B};
        \node at (c) {C};
        \end{tikzpicture}`

        [tt](a |- b)[/tt] significa proprio “ascissa di a, ordinata di b”. Ovviamente c’è anche [tt](a -| b)[/tt]. 😉

        Ciao,
        Antonio

      • #78800
        Up
        0
        Down
        ::


        Ciao,

        un grazie mille a tutti quanti! 🙂 Sono tutte soluzioni eleganti e anche piuttosto veloci. Credo che userò la soluzione di Antonio perché è la più breve in assoluto. Grazie anche per avermi fatto conoscere nuovi comandi!

        Buona giornata,
        Marco.

    Visualizzazione 3 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top