etichette per linee curve

  • Creatore
    Topic
  • #90823
    claudio
    Partecipante
      Up
      0
      Down
      ::


      ho il seguente codice
      `
      \documentclass[a4paper,11pt]{article}
      \usepackage[utf8]{inputenc}
      \usepackage[upright]{fourier}
      \usepackage{amsmath}
      \usepackage{tikz}
      \usetikzlibrary{decorations}
      \usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
      \usetikzlibrary{shapes.gates.logic.US,shapes.gates.logic.IEC}

      \begin{document}
      \begin{tikzpicture}[>=triangle 45]
      %\tikzset{samples=600}
      \pgfmathsetmacro{\raggio}{2};
      \pgfmathsetmacro{\angolob}{50};
      \pgfmathsetmacro{\angolo}{\angolob};
      \pgfmathsetmacro{\angolon}{\angolob+180};
      \pgfmathsetmacro{\y}{3};
      \pgfmathsetmacro{\xy}{4};
      %\pgfmathsetmacro{\XM}{\raggio};
      \pgfmathsetmacro{\sraggio}{1.9*\raggio};
      \coordinate [label=below right:$O$] (oo) at (0,0);
      \draw[->] (-\raggio-1,0) — (\raggio+1,0) node[above] {$x$} ;
      \draw[->] (0,-\raggio-1) — (0,\raggio+1) node[above] {$y$} ;
      \draw (\raggio,-\raggio-1) — (\raggio,\raggio+1) ;
      \draw (oo) circle (\raggio) ;
      \coordinate[label=above:$P$] (P) at ({\raggio*cos(\angolo)},{\raggio*sin(\angolo)});
      \coordinate[label=below:$Q$] (Q) at ({\raggio*cos(\angolon)},{\raggio*sin(\angolon )});
      \coordinate[label=below right:$T$] (T) at (\raggio,{\raggio*tan(\angolon )});
      %\coordinate [label=above left:$M$] (M) at ($((-\raggio,0)!(\angolo:\raggio)!(\raggio,0)$);
      \coordinate[label=above right:$y_1$] (X1) at (0,{\raggio*sin(\angolo)});
      \coordinate[label=below right:$y_2$] (X2) at (0,{\raggio*sin(\angolon)});
      \filldraw[black] (oo) circle(1pt);
      %\filldraw[black] (M) circle(1pt);
      \filldraw[black] (P) circle(1pt);
      \filldraw[black] (Q) circle(1pt);
      \filldraw[black] (T) circle(1pt);
      \filldraw[black] (X1) circle(1pt);
      \filldraw[black] (X2) circle(1pt);
      \draw[dashed](Q)– (P) ;
      \draw[dashed](X1)– (P) ;
      \draw[dashed](X2)– (Q) ;
      \draw[->] (\sraggio/\y,0 ) arc (0:\angolo:\sraggio/\y) node

      {$\alpha$};
      \draw[->] (\sraggio/\xy,0 ) arc (0:\angolon:\sraggio/\xy) node[ above] {$\beta$};
      \draw (oo)– (P) ;
      \draw (oo)– (Q) ;
      \draw (T)– (Q) ;
      \end{tikzpicture}
      \end{document}

      `
      nella figura vi sono due angoli alpha e beta l’unico problema
      è che l’etichetta appare sulla punta della freccia
      è possibile spostala in modo automatico
      a metà dell’arco?
      grazie
      claudio

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #90824
        claudio
        Partecipante
          Up
          0
          Down
          ::


          forse ho risolto
          modificando aggiungendo queste righe
          `
          \draw[->] (\sraggio/\y,0 ) arc (0:\angolo:\sraggio/\y) ;
          \draw (\angolo/2:\sraggio/\y) node[ above right] {$\alpha$};
          \draw[->] (\sraggio/\xy,0 ) arc (0:\angolon:\sraggio/\xy) ;
          \draw (\angolon/2:\sraggio/\xy) node[above left] {$\beta$};
          `
          ciao
          claudio

        • #90825
          Up
          0
          Down
          ::


          Questo è sicuramente uno di quei casi in cui utilizzare il mio [tt]insert node[/tt] torna comodo. La sua definizione è: `
          \tikzset{insert node/.style args={#1 at #2}{
          postaction=decorate,
          decoration={
          markings,
          mark= at position #2
          with
          {
          #1
          }
          }
          }
          }
          ` Richiede la libreria [tt]decorations.markings[/tt] e permette di “piazzare” un nodo in qualsiasi punto del percorso. Infatti, è ben noto che in alcuni tipi di path, non è sempre possibile con il metodo normale: arc è uno di quei casi. Trovi la motivazione e un metodo di soluzione simile al mio qui.

          Il mio metodo, rispetto al link, è più generale: in [tt]insert node[/tt] si può inserire un nodo con opzioni qualsiasi. Per il resto, il concetto di posizionamento è del tutto simile alla chiave [tt]pos=[/tt]: l’inizio del percorso è 0, la fine 1; scegli un valore intermedio che ti soddisfi . Nel tuo caso: `
          \draw[->,insert node={\node[above] {$\beta$};} at 0.7] (\sraggio/\xy,0 ) arc (0:\angolon:\sraggio/\xy);
          `

          Il codice completo (ho tolto qualche libreria inutile e fatto qualche semplificazione): `
          \documentclass[a4paper,11pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[upright]{fourier}
          \usepackage{amsmath}
          \usepackage{tikz}
          \usetikzlibrary{arrows,decorations,decorations.markings}

          \tikzset{insert node/.style args={#1 at #2}{
          postaction=decorate,
          decoration={
          markings,
          mark= at position #2
          with
          {
          #1
          }
          }
          }
          }

          \begin{document}
          \begin{tikzpicture}[>=triangle 45]
          %\tikzset{samples=600}
          \pgfmathsetmacro{\raggio}{2};
          \pgfmathsetmacro{\angolob}{50};
          \pgfmathsetmacro{\angolo}{\angolob};
          \pgfmathsetmacro{\angolon}{\angolob+180};
          \pgfmathsetmacro{\y}{3};
          \pgfmathsetmacro{\xy}{4};
          %\pgfmathsetmacro{\XM}{\raggio};
          \pgfmathsetmacro{\sraggio}{1.9*\raggio};
          \coordinate [label=below right:$O$] (oo) at (0,0);
          \draw[->] (-\raggio-1,0) — (\raggio+1,0) node[above] {$x$} ;
          \draw[->] (0,-\raggio-1) — (0,\raggio+1) node[above] {$y$} ;
          \draw (\raggio,-\raggio-1) — (\raggio,\raggio+1) ;
          \draw (oo) circle (\raggio) ;
          \coordinate[label=above:$P$] (P) at ({\raggio*cos(\angolo)},{\raggio*sin(\angolo)});
          \coordinate[label=below:$Q$] (Q) at ({\raggio*cos(\angolon)},{\raggio*sin(\angolon )});
          \coordinate[label=below right:$T$] (T) at (\raggio,{\raggio*tan(\angolon )});
          %\coordinate [label=above left:$M$] (M) at ($((-\raggio,0)!(\angolo:\raggio)!(\raggio,0)$);
          \coordinate[label=above right:$y_1$] (X1) at (0,{\raggio*sin(\angolo)});
          \coordinate[label=below right:$y_2$] (X2) at (0,{\raggio*sin(\angolon)});

          \foreach \posto in {oo,P,Q,T,X1,X2}{
          \filldraw[black,radius=1pt] (\posto) circle;
          }

          \foreach \sorg/\dest in {Q/P,X1/P,X2/P}
          \draw[dashed](\sorg)–(\dest);

          % notazione modificata di arc
          \draw[->,insert node={\node

          {$\alpha$};} at 0.5] (\sraggio/\y,0 ) arc[radius=\sraggio/\y,start angle=0,end angle=\angolo];

          % mantenuto la stessa notazione di arc
          \draw[->,insert node={\node[above] {$\beta$};} at 0.7] (\sraggio/\xy,0 ) arc (0:\angolon:\sraggio/\xy);

          \foreach \sorg/\dest in {oo/P,oo/Q,T/Q}
          \draw[dashed](\sorg)–(\dest);
          \end{tikzpicture}
          \end{document}
          `

          Ciao
          Claudio

      Visualizzazione 1 filone di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top