Re: Suggerimento: come disegnare le “sezioni coniche”?

#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.

    Go to top