tikz intersezione retta circonferenza

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


      Il codice è questo
      `
      \usetikzlibrary{shapes,arrows,trees,positioning,through}
      \usetikzlibrary{calc}
      \def\raggio{2cm};
      \begin{tikzpicture}
      \coordinate [label=$C$] (C) at (0,0);
      \node (D) at (1,2) {};
      \draw (C)[draw] circle (\raggio);
      \draw (C) – – ($ (C)!\raggio!(D) $);
      \end{tikzpicture}
      `
      Vorrei mettere una lettera nel punto di intersezione
      tra il raggio e la circonferenza.
      Ho trovato che tick è in grado di trovare il punto di
      intersezione tra due rette ma è il grado di farlo con una circonferenza e una retta?
      grazie
      claudio

    Visualizzazione 5 filoni di risposte
    • Autore
      Risposte
      • #67510
        Doc
        Partecipante
          Up
          0
          Down
          ::


          `\usetikzlibrary{shapes,arrows,trees,positioning,through}
          \usetikzlibrary{calc}
          \def\raggio{2cm};
          \begin{tikzpicture}
          \coordinate [label=$C$] (C) at (0,0);
          \node (D) at (1,2) {};
          \coordinate [label=$D$] (D) at (1,2);
          \draw (C)[draw] circle (\raggio);
          \draw (C) – – ($ (C)!\raggio!(D) $);
          \draw (0,0);
          \end{tikzpicture}`

          Intendi questo?

        • #67511
          Up
          0
          Down
          ::

          claudio” post=66525Il codice è questo
          `
          \usetikzlibrary{shapes,arrows,trees,positioning,through}
          \usetikzlibrary{calc}
          \def\raggio{2cm};
          \begin{tikzpicture}
          \coordinate [label=$C$] (C) at (0,0);
          \node (D) at (1,2) {};
          \draw (C)[draw] circle (\raggio);
          \draw (C) – – ($ (C)!\raggio!(D) $);
          \end{tikzpicture}
          `
          Vorrei mettere una lettera nel punto di intersezione
          tra il raggio e la circonferenza.
          Ho trovato che tick è in grado di trovare il punto di
          intersezione tra due rette ma è il grado di farlo con una circonferenza e una retta?
          grazie
          claudio

          Ciao,

          secondo me questo è uno dei casi in cui sarebbe meglio usare PGF con il comando \pgfintersectionofpaths{path 1}{path 2}. Lo trovi nelle pagine 576 e 577 del pgfmanual versione October 25, 2010 (quella che puoi leggere con texdoc tikz) e richiede la libreria intersections.

          Ciao
          Claudio

        • #67512
          claudio
          Partecipante
            Up
            0
            Down
            ::


            grufolando qua e la
            ho scritto il seguente codice
            `
            \usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
            \usetikzlibrary{calc}
            \def\raggio{2cm};
            \begin{tikzpicture}
            \coordinate [label=$C$] (C) at (0,0);
            \node (D) at (0,2) {};
            \node (F) at(1,2){};
            \node (cc) [name path=cc,draw,circle through=(D)] at (C) {};
            \path [name path=C–F] (C) — (F);
            \path [name intersections={of=cc and C–F}];
            \coordinate [label=above:$A$] (M) at (intersection-1);

            \path [name path=C–D] (C) — (D);
            \path [name intersections={of=cc and C–D}];
            \coordinate [label=above:$B$] (N) at (intersection-1);

            \draw (C) –(M);
            \draw(C)–(N);
            \end{tikzpicture}
            `

            ma non funziona 🙁
            perché le coordinate di N
            non sono corrette?
            Claudio

          • #67513
            Up
            0
            Down
            ::

            claudio” post=66529grufolando qua e la
            ho scritto il seguente codice
            `
            \usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
            \usetikzlibrary{calc}
            \def\raggio{2cm};
            \begin{tikzpicture}
            \coordinate [label=$C$] (C) at (0,0);
            \node (D) at (0,2) {};
            \node (F) at(1,2){};
            \node (cc) [name path=cc,draw,circle through=(D)] at (C) {};
            \path [name path=C–F] (C) — (F);
            \path [name intersections={of=cc and C–F}];
            \coordinate [label=above:$A$] (M) at (intersection-1);

            \path [name path=C–D] (C) — (D);
            \path [name intersections={of=cc and C–D}];
            \coordinate [label=above:$B$] (N) at (intersection-1);

            \draw (C) –(M);
            \draw(C)–(N);
            \end{tikzpicture}
            `

            ma non funziona 🙁
            perché le coordinate di N
            non sono corrette?
            Claudio

            Credo che succeda perché C–D non interseca cc, quindi usa l’ultimo punto di intersezione conosciuto, cioè M (infatti se inverti l’ordine della determinazione dei punti di intersezione tikz ti dirà che non è riuscito a trovare l’intersezione fra C–D e cc).

            Se la prossima volta commenti il codice o spieghi che vuoi fare aiuti chi ti vuole aiutare, ho impiegato 10 minuti solo per capire le tue intenzioni, anche se il codice era relativamente semplice.

            EDIT: Così funziona:
            `\usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
            \usetikzlibrary{calc}
            \begin{tikzpicture}
            \pgfmathsetmacro{\raggio}{2};
            \coordinate [label=below:$C$] (C) at (0,0);
            \coordinate (D) at (0,2); % puoi anche usare \node, ma mettendo l'opzione “shape=coordinate”, che è equivalente a questo comando più semplice
            \coordinate (F) at (1,2); % stessa osservazione del rigo di sopra
            \draw[name path=cc] (C) circle (\raggio); % se preferisci puoi comunque disegnare la circonferenza usando through
            \path [name path=C–D] (C) — (D);
            \path [name path=C–F] (C) — (F);
            \draw [name intersections={of=cc and C–F,by=M}] (C) — (M) node[above right]{$A$};
            \draw [name intersections={of=cc and C–D,by=N}] (C) — (N) node[above]{$B$};
            \end{tikzpicture}`

          • #67514
            claudio
            Partecipante
              Up
              0
              Down
              ::

              Elrond” post=66533

              grufolando qua e la
              ho scritto il seguente codice
              `
              \usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
              \usetikzlibrary{calc}
              \def\raggio{2cm};
              \begin{tikzpicture}
              \coordinate [label=$C$] (C) at (0,0);
              \node (D) at (0,2) {};
              \node (F) at(1,2){};
              \node (cc) [name path=cc,draw,circle through=(D)] at (C) {};
              \path [name path=C–F] (C) — (F);
              \path [name intersections={of=cc and C–F}];
              \coordinate [label=above:$A$] (M) at (intersection-1);

              \path [name path=C–D] (C) — (D);
              \path [name intersections={of=cc and C–D}];
              \coordinate [label=above:$B$] (N) at (intersection-1);

              \draw (C) –(M);
              \draw(C)–(N);
              \end{tikzpicture}
              `

              ma non funziona 🙁
              perché le coordinate di N
              non sono corrette?
              Claudio

              Credo che succeda perché C–D non interseca cc, quindi usa l’ultimo punto di intersezione conosciuto, cioè M (infatti se inverti l’ordine della determinazione dei punti di intersezione tikz ti dirà che non è riuscito a trovare l’intersezione fra C–D e cc).

              Se la prossima volta commenti il codice o spieghi che vuoi fare aiuti chi ti vuole aiutare, ho impiegato 10 minuti solo per capire le tue intenzioni, anche se il codice era relativamente semplice.

              EDIT: Così funziona:
              `\usetikzlibrary{shapes,arrows,trees,positioning,through,intersections}
              \usetikzlibrary{calc}
              \begin{tikzpicture}
              \pgfmathsetmacro{\raggio}{2};
              \coordinate [label=below:$C$] (C) at (0,0);
              \coordinate (D) at (0,2); % puoi anche usare \node, ma mettendo l'opzione “shape=coordinate”, che è equivalente a questo comando più semplice
              \coordinate (F) at (1,2); % stessa osservazione del rigo di sopra
              \draw[name path=cc] (C) circle (\raggio); % se preferisci puoi comunque disegnare la circonferenza usando through
              \path [name path=C–D] (C) — (D);
              \path [name path=C–F] (C) — (F);
              \draw [name intersections={of=cc and C–F,by=M}] (C) — (M) node[above right]{$A$};
              \draw [name intersections={of=cc and C–D,by=N}] (C) — (N) node[above]{$B$};
              \end{tikzpicture}`

              Scusa hai perfettamente ragione e ti ringrazio per la pazienza
              dovevo disegnare una circonferenza ed un angolo per introdurre il concetto di radiante
              la cosa curiosa è che se uso circle la circonferenza ha raggio 2
              mentre qui sembra che il raggio è più grande o sbaglio?
              claudio

            • #67515
              Up
              0
              Down
              ::

              claudio” post=66534Scusa hai perfettamente ragione e ti ringrazio per la pazienza
              dovevo disegnare una circonferenza ed un angolo per introdurre il concetto di radiante
              la cosa curiosa è che se uso circle la circonferenza ha raggio 2
              mentre qui sembra che il raggio è più grande o sbaglio?
              claudio

              Essenzialmente il problema era che definendo i nodi D e F con
              `\node (D) at (0,2) {};
              \node (F) at(1,2){};`
              sembra che le loro posizioni fossero leggermente più spostate verso il basso (questo creava problemi per D ma non per F perché F doveva trovarsi comunque oltre la circonferenza). Non ti so spiegare precisamente perché succeda questo, probabilmente leggendo con attenzione il manuale di tikz lo si capirebbe, però sta di fatto che usando
              `\coordinate (D) at (0,2);
              \coordinate (F) at (1,2);`
              (oppure gli equivalenti `\node [shape=coordinate]’) il problema non si presenta più. Il resto del codice che ho scritto fa essenzialmente le stesse cose che facevi tu, solo in qualche punto in maniera più sintetica.

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

          Go to top