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