Robitex's Blog

Ideas in the web

Retta di Eulero: PSTricks vs PGF


Quello che non vi ho detto

Come abbiamo visto nel post precedente la retta di Eulero è la retta passante per i tre punti notevoli di un triangolo: l’ortocentro O, il baricentro G, ed il circocentro M.
Viene subito da chiedersi se tali punti al variare del triangolo possono cambiare posizione reciproca. La risposta è no. Infatti il baricentro si trova sempre tra ortocentro e circocentro, non solo, la distanza tra G ed O risulta essere doppia di quella tra G ed M.

Verifichiamolo con un disegno utilizzando questa volta PSTricks, pacchetto storico che sfrutta il linguaggio PostScript per produrre grafica in LaTeX.
Giudicate voi il vincitore nell’arena tra PSTricks e PGF, è una bella lotta!

PSTricks vs PGF

Visto che esiste, utilizziamo il pacchetto pst-eucl di PSTricks, dedicato proprio al disegno geometrico (link al manuale).

In anticipo ecco il risultato finale che potete scaricare (si tratta di un file pdf di 7KB).

Come forse saprete occorre compilare il file sorgente contenente il codice pstricks con latex e non con pdflatex, passare il dvi risultante con il driver dvips per ottenere il file postscript e se volete, convertirlo infine in pdf per esempio con ps2pdf. Per saperne di più potete consultare i due post precedenti per abbreviare questo procedimento il primo per Windows ed il secondo per Linux.

Ok. Definiamo in un attimo la struttura del file sorgente per poterci concentrare sul linguaggio di pst-eucl: di seguito riporto il codice di un semplice sorgente LaTeX per produrre i nostri test:

\documentclass[11pt,a4paper]{article}
\usepackage{pstricks}
\usepackage{pst-eucl}

\pagestyle{empty}
\begin{document}
\begin{pspicture}(10,10)

% sistemare quì il codice pstricks

\end{pspicture}
\end{document}

Disegno del triangolo

I comandi pst-eucl hanno tutti come prefisso pst seguito dal nome dell’oggetto geometrico che vogliamo costruire. Per il triangolo si usa quindi il comando \pstTriangle a cui viene passata la sequenza (x,y){nomeVertice}, per esempio così:

\pstTriangle(0,0){A}(6.5,-3.5){B}(5,6){C}

Possiamo notare un paio di differenze con PGF, la prima è che essendo un pacchetto specializzato pst-eucl propone comandi dedicati alla geometria, e la seconda che il nome assegnato al vertice diventa anche l’etichetta che viene composta già in modalità matematica. Vedremo che questo a volte risulta essere più comodo altre volte invece no, rispetto alla sintassi PGF che distingue il nome dall’etichetta.

Notate come pst-eucl cerca di fare del suo meglio per posizionare la etichette dei vertici cercando di minimizzare la necessità d’intervento manule con la regolazione dell’angolo PosAngle, una prerogativa interessante.

Disegno del baricentro

Occorre individuare il punto di mezzo di un segmento e tracciare le mediane. In pst-eucl vi sono i comandi \pstMiddleAB e \pstLineAB per farlo. Ecco il codice:

% Gravity center
\pstMiddleAB{A}{B}{C’}
\pstMiddleAB{A}{C}{B’}
\pstMiddleAB{B}{C}{A’}

\pstLineAB{A}{A’}
\pstLineAB{B}{B’}
\pstLineAB{C}{C’}

% otherwise use \pstCGravABC
\pstInterLL{A}{A’}{B}{B’}{G}

Ancora molto semplice la sintassi che presenta un novità linguistica: dopo il solito prefisso pst troviamo il nome dell’oggetto richiesto seguito da AB ad indicare che l’operazione va effettuata su un segmento. La cosa è abbastanza curiosa e se utilizziamo come abbiamo fatto noi i caratteri A e B come nomi dei vertici, il codice solleva un po’ di confusione.

L’ultimo comando “marca” il baricentro etichettandolo. Esso richiede quattro punti che definiscono le rette di cui si vuole calcolare il punto d’intersezione lineare (LL). Da notare che possiamo anche utilizzare il comando apposito \pstCGravABC di un tipo sconosciuto in PGF (non essendo dotato di librerie specializzate almeno per il momento).

Disegno dell’ortocentro

Per disegnare le altezze del triangolo occorre determinare la proiezione ortogonale di un vertice sul lato opposto. \pstProjection è il comando che fa al caso nostro. Accetta (obbligatoriamente) due punti che definiscono la retta, un terzo punto da cui effettuare la proiezione ed un argomento opzionale con il nome del punto trovato. Sinceramente non vedo a cosa possa servire non assegnare il nome a tale punto visto che in seguito non è possibile individuarlo se non lo si fa. Be, forse non è altro che la mia poca conoscenza di pst-eucl (i vostri pensieri in proposito sono ben accetti).

In definitiva ecco il codice, semplice semplice:

\pstProjection{A}{B}{C}[co]
\pstProjection{A}{C}{B}[bo]
\pstProjection{B}{C}{A}[ao]

\pstLineAB{A}{ao}
\pstLineAB{B}{bo}
\pstLineAB{C}{co}

\pstInterLL{A}{ao}{B}{bo}{O}

Disegno del circocentro

Per disegnare un asse di un segmento di cui sono noti gli estremi utilizziamo questa volta il comando \pstMediatorAB. Occorre passargli gli estremi del segmento in ordine rispetto al semipiano in cui si vuole che l’asse sia disegnato, il nome del punto di mezzo del segmento (questa volta obbligatorio), ed il nome del secondo punto che definisce il segmento d’asse (anche questa volta obbligatorio), da cui il codice:

\pstMediatorAB{A}{B}{c”}{Mc}
\pstMediatorAB{B}{C}{a”}{Ma}
\pstMediatorAB{C}{A}{b”}{Mb}

\pstInterLL{c”}{Mc}{b”}{Mb}{M}

Notate come in questo codice vengono definiti di nuovo i punti di mezzo dei lati del triangolo, solo perché il comando \pstMediatorAB prevede che tali punti devono essere obbligatoriamente definiti. Il doppione si potrebbe eliminare disegnando prima gli assi per il circocentro e poi le mediane per il baricentro, ma ritengo che questa soluzione sia un vincolo alla scrittura del codice non giustificato.

Disegno della retta di Eulero

Quì viene il bello. Dopo aver disegnato pazientemente tutti gli elementi, ecco che si propone la necessità di disegnare rette e cerchi. Nel primo caso esiste una comodissima opzione del comando \pstLineAB chiamata nodesep a cui passare un valore numerico negativo se vogliamo che la retta venga estesa di quella quantità verso l’esterno dai due punti di definizione, ed un positivo se viceversa. Nel secondo caso il comando \pstCircleOA traccia fantasticamente il cerchio con centro nel punto primo argomento passante per il punto secondo argomento. Bè se vi ricordate che in PGF per fare la stessa cosa è necessario caricare una apposita libreria aggiuntiva, goderete certamente dell’eleganza di pst-eucl. Ecco l’ultimo frammento di codice (il comando \pstSegmentMark traccia simboli di eguaglianza su segmenti):

\pstLineAB[nodesep=-2]{O}{M}
\pstCircleOA[linecolor=red]{M}{A}
\pstCircleOA[linecolor=blue]{G}{M}

\pstMiddleAB{O}{G}{K}
\pstSegmentMark{O}{K}
\pstSegmentMark{K}{G}

Bene, la retta di Eulero è servita. Come vedete è stata tracciata utilizzando i punti che sicuramente sono i più lontani (O ed M), mentre con il cerchio centrale si è mostrato la condizione geometrica della distanza di detti punti dal baricentro evidenziando con i mark a doppie barre i mutui rapporti.

Fine della storia (o forse no)

Non rimane che affinare un po’ il codice con qualche tocco di colore e modifica alle etichette ed il gioco è fatto. Consultate il manuale di pst-eucl per conoscere i dettagli delle opzioni.

\documentclass[11pt,a4paper]{article}
\usepackage{pstricks}
\usepackage{pst-eucl}

\pagestyle{empty}
\begin{document}
\begin{pspicture}(10,10)
% Triangle definition
\pstTriangle[linewidth=1.5\pslinewidth](0,0){A}(6.5,-3.5){B}(5,6){C}

% Gravity center
{
\psset{linewidth=0.5\pslinewidth,linecolor=red}
\pstMiddleAB[PosAngle=-90]{A}{B}{C’}
\pstMiddleAB{A}{C}{B’}
\pstMiddleAB[PosAngle=0]{B}{C}{A’}

\pstLineAB{A}{A’}
\pstLineAB{B}{B’}
\pstLineAB{C}{C’}
}

% othewise use \pstCGravABC
\pstInterLL[PosAngle=-30]{A}{A’}{B}{B’}{G}

% Orthocentre
{
\psset{PointSymbol=none,linewidth=0.5\pslinewidth,linecolor=orange,PointName=none}
\pstProjection{A}{B}{C}[co]
\pstProjection{A}{C}{B}[bo]
\pstProjection{B}{C}{A}[ao]

\pstLineAB{A}{ao}
\pstLineAB{B}{bo}
\pstLineAB{C}{co}
}

\pstInterLL[PosAngle=-80]{A}{ao}{B}{bo}{O}

% CircumCentre
{
\psset{PointSymbol=none,linewidth=0.5\pslinewidth,linecolor=green,PointNameA=none,PointNameB=none}
\pstMediatorAB[nodesepB=-1]{A}{B}{c”}{Mc}
\pstMediatorAB[nodesepB=1]{B}{C}{a”}{Ma}
\pstMediatorAB{C}{A}{b”}{Mb}
}

\pstInterLL[PosAngle=-40]{c”}{Mc}{b”}{Mb}{M}

% Euler Line
\pstLineAB[linecolor=blue,nodesep=-3.2,linewidth=2\pslinewidth]{O}{M}

\pstCircleOA[linecolor=red]{M}{A}

\pstCircleOA[linecolor=blue]{G}{M}

\pstMiddleAB[PosAngle=132]{O}{G}{K}
\pstSegmentMark[linecolor=blue]{O}{K}
\pstSegmentMark[linecolor=blue]{K}{G}
\pstSegmentMark[linecolor=blue]{G}{M}
\end{pspicture}
\end{document}

Alla prossima.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: