Suggerimento: come disegnare le “sezioni coniche”?

  • Creatore
    Topic
  • #84917
    alegenn
    Partecipante
      Up
      0
      Down
      ::


      Buongiorno,
      ho necessità di riprodurre un disegno simile a questo:

      [attachment=670]Conic_sections1.gif[/attachment]

      per spiegare le coniche.
      Ho abbozzato un codice TikZ, ma subito mi sono trovato in difficoltà (vedi: qui).

      Mi sembra di capire che [tt]Asymptote[/tt] che non conosco 🙁 sia molto adatto…

      Ora il mio quesito: mi suggerite di insistere con TikZ, oppure di trovare il tempo necessario per imparare [tt]Asymptote[/tt]? (Considerate che non mi capita spesso di dover disegnare solidi!)

      Con TikZ qualcuno sa come ovviare al problema evidenziato nel link?

      Saluti

      Attachments:
      You must be logged in to view attached files.
    Visualizzazione 6 filoni di risposte
    • Autore
      Risposte
      • #84918
        Liverpool
        Partecipante
          Up
          0
          Down
          ::


          Qual è il problema evidenziato nel link?
          Con TikZ la vedo dura. Asymptote non lo conosco, ma al posto tuo darei un’occhiata a quello che può fare.

        • #84919
          Liverpool
          Partecipante
            Up
            0
            Down
            ::


            Forse ti riferisci al disegno del cono. L’ultima generatrice visibile del cono è quella che, proiettata sul piano prospettico risulta tangente all’ellisse della base, perciò i punti di tangenza non è detto che si trovino sull’asse maggiore dell’ellisse (anzi, teoricamente non si trovano mai). Se questa ha equazione
            \[\frac{(x-x_C)^2}{a^2}+\frac{(y-y_C)^2}{b^2}=1\]
            e se l’altezza proiettata del cono è \(h\), allora le coordinate dei punti di tangenza sono (se non ho sbagliato i calcoli):
            \[ PROTECTED2 \]
            Quindi il codice va riscritto tenendo conto di questi punti. Nel caso del tronco di cono ovviamente vanno determinate le coppie di punti su ogni circonferenza.

            Osservazione: come avrai notato, i punti di tangenza si trovano sull’asse maggiore se \(h\to\pm\infty\), cioè nella pratica quando il cono è molto alto, motivo per il quale, in quel caso, sembra che i punti di tangenza si trovino sull’asse dell’ellisse.
            Osservazione 2: a parità di altezza, più è schiacciata l’ellisse, più i punti di tangenza sembrano trovarsi sull’asse dell’ellisse.
            Osservazione 3: le formule valgono per una proiezione assonometrica ortografica.

            Eccoti un codice elementare che illustra il metodo descritto. Puoi provare a cambiare i valori nel preambolo per vedere come funziona. Gli angoli di partenza e arrivo degli archi si ricavano dall’equazione dell’ellisse in forma polare (vedi le osservazioni in questa conversazione).
            `\documentclass

            {standalone}
            \usepackage{tikz}
            \usetikzlibrary{shadings}
            \def\xc{0} % ascissa del centro dell'ellisse
            \def\yc{0} % ordinata del centro dell'ellisse
            \def\a{2} % lunghezza del semiasse maggiore
            \def\b{1} % lunghezza del semiasse minore
            \def\h{4} % altezza del cono
            \pgfmathsetmacro{\xp}{\xc+\a*sqrt(1-(\b/\h)^2)} % ascissa del punto di tangenza “destro”
            \pgfmathsetmacro{\yp}{\yc+\b^2/\h} % ordinate dei punti di tangenza
            \pgfmathsetmacro{\t}{acos((\xp-\xc)/\a)} % angolo associato al punto di tangenza destro (in gradi)
            \begin{document}
            \begin{tikzpicture}
            \fill [top color=gray!50, bottom color=gray!5] (\xc,\yc) ellipse ({\a} and \b); % retino della base
            \draw [dashed] (\xp,\yp) arc (\t:{180-\t}:{\a} and \b); % tratteggio posteriore
            \filldraw

            (\xc,{\yc+\h}) — (\xp,\yp) arc (\t:{-180-\t}:{\a} and \b) — cycle; % retino della sup. laterale e contorno
            \end{tikzpicture}
            \end{document}`

            [attachment=675]prova2_2013-04-17.png[/attachment]

            Versione alternativa con uno [tt]scope[/tt] (le coordinate del centro dell’ellisse sono il valore della chiave [tt]shift[/tt]).
            `\documentclass

            {standalone}
            \usepackage{tikz}
            \usetikzlibrary{shadings}
            \def\a{2} % lunghezza del semiasse maggiore
            \def\b{1} % lunghezza del semiasse minore
            \def\h{4} % altezza del cono
            % ascissa del punto di tangenza “destro” rispetto al centro dell'ellisse:
            \pgfmathsetmacro{\xp}{\a*sqrt(1-(\b/\h)^2)}
            % ordinate dei punti di tangenza rispetto al centro dell'ellisse:
            \pgfmathsetmacro{\yp}{\b^2/\h}
            % angolo associato al punto di tangenza “destro” (in gradi):
            \pgfmathsetmacro{\t}{acos(\xp/\a)}
            \begin{document}
            \begin{tikzpicture}
            \begin{scope}[shift={(0,0)}]
            \fill [top color=gray!50, bottom color=gray!5] (0,0) ellipse ({\a} and \b); % retino della base
            \draw [dashed] (\xp,\yp) arc (\t:{180-\t}:{\a} and \b); % tratteggio posteriore
            \filldraw

            (0,\h) — (\xp,\yp) arc (\t:{-180-\t}:{\a} and \b) — cycle; % retino della sup. laterale e contorno
            \end{scope}
            \end{tikzpicture}
            \end{document}`
            Ciao

            Attachments:
            You must be logged in to view attached files.
          • #84920
            Up
            0
            Down
            ::

            alegenn” post=84277Buongiorno,
            ho necessità di riprodurre un disegno simile a questo:

            [attachment=670]Conic_sections1.gif[/attachment]

            per spiegare le coniche.
            Ho abbozzato un codice TikZ, ma subito mi sono trovato in difficoltà (vedi: qui).

            Mi sembra di capire che [tt]Asymptote[/tt] che non conosco 🙁 sia molto adatto…

            Ora il mio quesito: mi suggerite di insistere con TikZ, oppure di trovare il tempo necessario per imparare [tt]Asymptote[/tt]? (Considerate che non mi capita spesso di dover disegnare solidi!)

            Con TikZ qualcuno sa come ovviare al problema evidenziato nel link?

            Saluti

            Infatti, anche secondo me TikZ crea difficoltà: non perché sia virtualmente impossibile riprodurre il disegno, ma perché sarebbe veramente lungo e laborioso (penso anche a come impostare le trasparenze oltre che, ovviamente, alle proiezioni – cosa di gran lunga più difficile). Conta anche che, per quanto ho visto frequentando TeX.SX, chi ha posto quella domanda è forse uno degli utenti che meglio ha affrontato la tematica 3D.

            Poi, puoi sempre tentare: recentemente, ho visto come realizzare una piramide How to draw this pyramid with TeX?: ma guarda la differenza già solo che c’è nel codice PSTricks vs TikZ…

            Ciao
            Claudio

          • #84921
            Up
            0
            Down
            ::


            Ciao,

            probabilmente è una sciocchezza ma, potrebbe essere utile usare Sketch in combinata con [tt]TikZ,[/tt] come si spiegava in questo articolo?

            Ciao,
            Marco.

          • #84922
            alegenn
            Partecipante
              Up
              0
              Down
              ::


              Grazie a tutti per le preziose osservazioni.
              Rifletterò sui vari problemi che sto incontrando, ma sono orientato a credere che riprodurre il disegno con TikZ sia davvero complesso…
              Saluti

              PS: se dovessi ottenere un codice che si avvicina al risultato lo inserirò nel topic. 🙂

            • #84923
              Up
              0
              Down
              ::


              Altro esempio che potrebbe interessarti: Projection of Circle onto Spherical Surface.

              Ciao
              Claudio

            • #84924
              Liverpool
              Partecipante
                Up
                0
                Down
                ::


                Fuori dal concorsone n. 3 da poco indetto, ho aggiornato il mio ultimo messaggio con un esempio di codice che utilizza le formule lì descritte.

                Ciao

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

            Go to top