Eukleides linguaggio appositamente creato per descrivere una figura usando un linguaggio di programmazione.

Molti programmi gratuiti permettono di giocare con la geometria euclidea dinamica al computer. E’ un gioco entusiasmante disegnare ad esempio un triangolo equilatero su un segmento e poi, trascinando con il mouse uno dei due vertici, vedere come la figura cambia orientamento e dimensione. Il programma con cui gioco spesso e volentieri è ZuL, che mi ha anche insegnato che “der Zirkel” è il compasso in tedesco, e che la parola per riga inizia con la L. Lingua affascinante.
Un approccio completamente diverso, sicuramente più geek, è quello di descrivere una figura usando un linguaggio di programmazione. Un linguaggio appositamente creato per questo scopo è Eukleides, di Christian Obrecht, che con il motto “ciò che intendi è ciò che ottieni” vuole prestarsi alla creazione di immagini geometriche partendo da una loro descrizione sintetica. L’immagine creata è un eps che può direttamente essere incorporato in un testo LaTeX, ma può anche essere convertito in jpg. Chi lavora in ambiente Linux, per queste cose, è molto avvantaggiato, ma non tutti sono così fortunati.

Download.


Installazione.

Recarsi in Ubuntu Software Center, digitare la parola "eukleides" -senza virgolette- e cliccare subito sul file trovato per avviare automaticamente l'installazione con tutte le librerie richieste.

Eukleides è un linguaggio di alto livello quindi, ad esempio, permette di definire un triangolo con vertici C, L, M, semplicemente scrivendo
C L M triangle
Scriviamo questa riga in un file di testo, triangolo.euk, e aggiungiamo come seconda linea
draw (C.L.M)
con il comando di disegnare il triangolo. Compilando da riga di comando con “eukleides triangolo.euk”, otteniamo in output il file “triangolo.eps”.
Ebbene sì, è Eukleides che decide quale triangolo disegnare. Senza ulteriori specifiche, come la lunghezza di alcuni lati o l’ampiezza di alcuni angoli, ecco che ci pensa lui a proporre un triangolo generico.
Le parole chiave che descrivono le figure geometriche sono in inglese, ma il programma è disponibile anche in francese e tedesco. Non ho trovato molte informazioni a riguardo, anche perché il manuale di istruzioni, così come il sito di Eukleides, sono capolavori di minimalismo, ma volevo tradurre il linguaggio in italiano. Per non perderci troppo tempo ho buttato giù un breve script in Lua che traduce una descrizione dall’italiano all’inglese, esegue Eukleides e infine cancella la traduzione. Lo script traduce solo le parole chiave che ho sperimentato fino ad ora ed è quindi incompleto. Inoltre Lua non è troppo diffuso, sicché per adesso evito di diffondere questo script. In quel che segue uso comunque le parole in italiano, che suppongo siano, in un modo o nell’altro, gestite correttamente.
Intendiamo disegnare un quadrato e un punto P interno ad esso. Proiettiamo quindi ortogonalmente il punto P sui quattro lati del quadrato. Il contenuto del file quadrato.euk è il seguente codice Eukleides:
A B C D quadrato 4

P = punto(4*1/3, 4*2/3)

K = proiezione(P, retta(A, B))
L = proiezione(P, retta(B, C))
M = proiezione(P, retta(C, D))
N = proiezione(P, retta(D, A))

disegna
  (A.B.C.D)
  P
  K; L; M; N
fine

disegna tratteggiato
  P.K; P.L; P.M; P.N
end

etichetta
  A 225°; C 45°
  B 315°; D 135°
  P 45°
fine
Degna di nota è la facilità con cui abbiamo definito i quattro punti, proiezioni sulle rette contenenti i lati del quadrato. Chiediamo di scrivere l’etichetta con il nome del punto P a 45 gradi in senso antiorario partendo dall’orizzontale destra, e quindi in alto a destra, rispetto alla sua posizione. Analogamente con 225, 315 e 135 posizioniamo le etichette rispettivamente in basso a sinistra, in basso a destra e in alto a sinistra del punto corrispondente.
In un secondo file, quadrato2.euk, definiamo, dopo le proiezioni, anche i punti medi tra queste:
A_m = punto_medio(N.K)
B_m = punto_medio(K.L)
C_m = punto_medio(L.M)
D_m = punto_medio(M.N)

disegna
  (A.B.C.D)
  P
  A_m; B_m; C_m; D_m
fine

disegna
  K.L; L.M; M.N; N.K
end

etichetta
  N.A_m; A_m.K
fine

etichetta doppia
  K.B_m; B_m.L
fine

etichetta tripla
  L.C_m; C_m.M
fine

etichetta croce
  M.D_m; D_m.N
fine
Le altre istruzioni trovano immediato riscontro nell’immagine prodotta, e servono a marcare come uguali le due metà di ciascun segmento congiungente le proiezioni.
In un ultimo file, quadrato3.euk, lasciamo solo i punti medi e uniamoli tra di loro. Usiamo una formattazione condizionata:
se quadrato(A_m, B_m, C_m, D_m)
  disegna blu
    A_m.B_m; B_m.C_m; C_m.D_m; D_m.A_m
  fine
altrimenti
  disegna rosso
    A_m.B_m; B_m.C_m; C_m.D_m; D_m.A_m
  fine
fine
Se Eukleides capisce che i punti medi formano un quadrato, li unisce con quattro segmenti blu, altrimenti usa il rosso.
Ed è blu (anche se dal jpg non sembra)! Questo è vero per qualsiasi punto P all’interno del quadrato: come lo dimostri? Qual è l’area del quadrato blu?
Come bonus, un’immagine per ispirarsi:
Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

reeder
Luca Soraci

Luca Soraci

Ubuntu giunge alle nostre orecchie solo perché è stato mutuato come nome per un sistema operativo di successo; lo abbiamo sentito nei discorsi di Mandela, del vescovo Tutu, ed è uno dei concetti fondanti di quel movimento di rinascimento che vuole far fiorire il continente africano al di sopra delle difficoltà attuali.

Nessun commento:

Posta un commento

Powered by Blogger.