Re: Il disegno programmato nell’Arte di scrivere con LaTeX

#72878
Liverpool
Partecipante
    Up
    0
    Down
    ::


    Nota: è un aggiornamento dell’ultimo messaggio, che ho rimosso contestualmente.

    lorenzo.pantieri” post=83616la procedura che descrivi per trovarlo non è di certo immediata

    E’ la costruzione geometrica con squadre, compasso e goniometro. Nel caso dell’arco di ellisse la situazione si complica, perché gli angoli associati agli estremi vanno determinati a partire dalla circonferenza concentrica di diametro pari alla lunghezza di un asse e “proiettati” sull’ellisse parallelamente all’altro asse, oppure equivalentemente a partire dalla circonferenza concentrica inscritta (risp. circoscritta) e “proiettati” parallelamente all’asse maggiore (risp. minore), come nella costruzione geometrica dell’ellisse dati i suoi assi. La motivazione per una tale scelta risiede probabilmente nella possibilità di utilizzare rapidamente l’equazione della conica in forma polare.
    Questo esempio chiarirà:
    `\documentclass{standalone}
    \usepackage{tikz}

    \begin{document}
    \begin{tikzpicture}[>=latex, font=\scriptsize]
    \draw [->] (-2.3,0) — (2.3,0); % asse x
    \draw [->] (0,-1.3) — (0,1.3); % asse y
    \draw [gray] (0,0) — (30:1.8); % raggio vettore
    \node at (0.7,0.16) {$30^\circ$}; % etichetta dell'angolo
    \draw [->, gray, dashed] (-2.2,0.5) — (2.2,0.5); % linea di proiezione
    \draw [->] (1,0) arc (0:30:1); % arco sulla circonferenza
    \draw [opacity=0.4] (1,0) arc (360:30:1); % completamento della circonferenza
    \draw [->, red, thick] (2,0) arc (0:30:2 and 1); % arco proiettato sull'ellisse
    \draw [red, opacity=0.4] (2,0) arc (360:30:2 and 1); % completamento dell'ellisse
    \node at (0,-1.5) {\verb!(2,0) arc (0:30:2 and 1)!}; % didascalia
    %
    \begin{scope}[xshift=5cm] % trasla il contenuto di 10 cm verso destra
    \fill [red!25] (0,0) — (0:2) arc (0:45:2 and 1) — cycle; % sfondo dell'angolo phi
    \fill [blue!15] (0,0) — (0:1) arc (0:45:1) — cycle; % sfondo dell'angolo theta
    \foreach \i in {0,22.5,…,360}{
    \draw [gray] (0,0) — (\i:2.1); % raggio vettore
    \draw [gray, dashed, very thin] (\i:1) — ({2*cos(\i)},{sin(\i)}); % proiezioni degli archi
    \draw [gray, dashed, very thin] (\i:2) — ({2*cos(\i)},{sin(\i)});
    }
    \draw [->] (-2.3,0) — (2.3,0); % asse x
    \draw [->] (0,-2.3) — (0,2.3); % asse y
    \node [blue] at (22.5:0.6) {$\phi$}; % etichetta dell'angolo phi
    \node [red] at (13:1.3) {$\theta$}; % etichetta dell'angolo theta
    \foreach \i in {1,2}{ % circonferenze inscritta e circoscritta
    \draw [-latex] (\i,0) arc (0:45:\i); % arco sulla circonferenza
    \draw [opacity=0.4] (\i,0) arc (360:45:\i); % completamento della circonferenza
    }
    \draw [-latex, red, thick,] (2,0) arc (0:45:2 and 1); % arco proiettato sull'ellisse
    \draw [red, opacity=0.4] (2,0) arc (360:45:2 and 1); % completamento dell'ellisse
    \node at (0,-1.5) {\verb!(2,0) arc (0:45:2 and 1)!}; % didascalia
    \node [font={\scriptsize\sffamily}] at (0,-1.8) {costruzione dell'ellisse dati i suoi assi};
    \end{scope}
    %
    \begin{scope}[xshift=10cm] % trasla il contenuto di 5 cm verso destra
    \fill [blue!15] (0,0) — (0:2) arc (0:45:2) — cycle; % sfondo dell'angolo theta
    \fill [red!25] (0,0) — (0:1) arc (0:45:1 and 2) — cycle; % sfondo dell'angolo phi
    \foreach \i in {0,22.5,…,360}{
    \draw [gray] (0,0) — (\i:2.1); % raggio vettore
    \draw [gray, dashed, very thin] (\i:1) — ({cos(\i)},{2*sin(\i)}); % proiezioni degli archi
    \draw [gray, dashed, very thin] (\i:2) — ({cos(\i)},{2*sin(\i)});
    }
    \draw [->] (-2.3,0) — (2.3,0); % asse x
    \draw [->] (0,-2.3) — (0,2.3); % asse y
    \node [blue] at (22.5:1.4) {$\phi$}; % etichetta dell'angolo phi
    \node [red] at (31.7:0.7) {$\theta$}; % etichetta dell'angolo theta
    \foreach \i in {1,2}{ % circonferenze inscritta e circoscritta
    \draw [-latex] (\i,0) arc (0:45:\i); % arco sulla circonferenza
    \draw [opacity=0.4] (\i,0) arc (360:45:\i); % completamento della circonferenza
    }
    \draw [-latex, red, thick,] (1,0) arc (0:45:1 and 2); % arco proiettato sull'ellisse
    \draw [red, opacity=0.4] (1,0) arc (360:45:1 and 2); % completamento dell'ellisse
    \node at (0,-1.5) {\verb!(1,0) arc (0:45:1 and 2)!}; % didascalia
    \node [font={\scriptsize\sffamily}] at (0,-1.8) {costruzione dell'ellisse dati i suoi assi};
    \end{scope}
    \end{tikzpicture}
    \end{document}`

    [attachment=657]e2.png[/attachment]

    A questo punto la prima domanda è: che relazione esiste tra l’angolo (assegnato) sulla circonferenza concentrica \(\phi\) e l’angolo effettivo sull’ellisse \(\theta\)?
    Poiché tutti i metodi descritti sono equivalenti, utilizziamo il primo. Consideriamo circonferenza ed ellisse nell’origine perché, dato che ci serve la relazione tra gli angoli, un’eventuale traslazione non ha alcun effetto. L’equazione cartesiana dell’ellisse sia: \[\frac{x^2}{a^2}+\frac{y^2}{b^2}=1\].
    Sia \(b\) il raggio della circonferenza, allora l’estremo libero dell’arco sulla circonferenza ha coordinate \(P_C(b\cos\phi,b\sin\phi)\). Allora l’estremo libero dell’arco sull’ellisse si determina intersecando la stessa con la retta di equazione \(y=b\sin\phi\) e si ottiene \(x_{1,2}=\pm a\cos\phi\). Va da sé che la soluzione che ci interessa è quella che ha lo stesso segno di \(\cos\phi\), dunque \(x=a\cos\phi\). Quindi il punto proiettato sull’ellisse ha coordinate \(P(a\cos\phi,b\sin\phi)\). Allora l’angolo effettivo in gradi sull’ellisse è:
    \[\theta= PROTECTED1 \]
    e di conseguenza, essendo \(\cot\theta=\frac{a\cos\phi}{b\sin\phi}=\frac{a}{b}\cot\phi\Rightarrow\cot\phi=\frac{b}{a}\cot\theta=\frac{b\cos\theta}{a\sin\theta}\),
    \[\phi= PROTECTED2 \]
    relazione che può essere utile se si vuole conoscere il valore da inserire nella formula di TikZ. Nelle formule precedenti (che sono banalmente l’estensione della funzione arcocotangente a valori in un angolo giro), l’arcotangente dà valori in radianti e \(\theta\) e \(\phi\) sono espressi in gradi sessagesimali nell’intervallo \([0^\circ,360^\circ[\).
    Osservazione: se il centro dell’ellisse è \(C(x_C,y_C)\), le coordinate di \(P\) sono \(P(x_C+a\cos\phi, y_C+b\sin\phi)\) e rappresentano banalmente le coordinate di un punto generico dell’ellisse nel sistema di riferimento polare.

    La seconda domanda è: come costruisco l’ellisse?
    La costruzione geometrica può essere realizzata con squadre, compasso ed eventualmente goniometro (senza calcolatrice). Si traccia la circonferenza con centro in \(P\) (assegnato) e raggio \(CP\) (essendo noti \(a\), \(b\) e \(\phi\)). Si determina l’angolo \(\theta\) e si traccia per \(P\) il diametro orientato con inclinazione pari a \(\theta\). La scocca del diametro è il centro \(C\) dell’ellisse della quale sono note anche le lunghezze degli assi…
    La determinazione dell’angolo \(\theta\) non è strettamente necessaria, perché note le coordinate di \(P\) nel sistema \(xCy\), con una traslazione si ricavano le coordinate di \(C\) nel sistema \(xPy\): \(C(-a\cos\phi,-b\sin\phi)\), perciò \(C\) si può individuare squadre e compasso.
    Analiticamente, indicato con \(P(x_P,y_P)\) l’estremo assegnato dell’arco e con \(\phi_P\) e \(\phi_Q\) gli angoli associati agli estremi dell’arco di circonferenza corrispondente, un generico punto dell’arco ha coordinate \(N(x_C+a\cos\phi, y_C+b\sin\phi)\). Dovendo \(P\) appartenere all’arco, è facile verificare che \(x_P=x_C+a\cos\phi_P\) e \(y_P=y_C+b\sin\phi_P\), quindi le coordinate del centro dell’ellisse sono \(C(x_P-a\cos\phi_P, y_P-b\sin\phi_P)\).
    Osservazione: quando si vuole tracciare un arco su un’ellisse di centro noto, si può usare l’espressione delle coordinate di \(P\) per determinare uno degli estremi dell’arco.

    Attachments:
    You must be logged in to view attached files.

    Go to top