I triangoli equilateri nella Geometria del Taxi

I triangoli equilateri nella Geometria del Taxi
25 maggio 2006
Relazione progetto Matematica del discreto
Enrico Brusati (702184)
Yari Melzani (703242)
Prof.ssa Laura Citrini
A.A. 2005/2006
1 La geometria dei taxi
Particolare tipo di geometria non euclidea, la cui creazione è dovuta a Minkowski.
Il piano è una griglia, a maglie quadrate, rappresentanti le strade di una città ideale. In sostanza è come pensare di lavorare su un piano quadrettato, come un foglio da
quaderno. Rispetto alla geometria euclidea cambia la definizione di distanza: se consideriamo due punti sul piano quadrettato la distanza non sarà quella “in linea d’aria”
calcolata con l’usuale teorema di Pitagola, bensì, la distanza calcolata sulla strada, dal
momento che il “taxi” si muove lungo le vie della città. Supponiamo di essere in uno
spazio a due dimensioni, la distanza fra due punti assegnati P ≡ (x0 , y0 ) e Q ≡ (x1 , y1 )
si calcolerebbe usualmente come
PQ =
p
(x0 − x1 )2 + (y0 − y1 )2
1
2 I TRIANGOLI EQUILATERI
mentre, nella geometria dei taxi la distanza è calcolata nel seguente modo:
P Q = |x0 − x1 | + |y0 − y1 |
Se consideriamo v il vettore P Q si possono derivare le proprietà da quelle che
valgono per la norma:
1. Positività: ||v|| > 0 se v 6= 0, ||v|| = 0 se e solo se v = 0
2. Omogeneità: ||kv|| = |k| ||v||
3. Disuguaglianza triangolare: ||v + w|| ≤ ||v|| + ||w||, l’uguaglianza vale solo se
(v = 0, w = 0, v = kw)
Lo spazio sul quale si muove il “taxi” è di fatto un reticolo costituito da punti discreti che rappresentano gli incroci delle strade sulle quali il “taxi” si deve muovere per
giungere a destinazione. La distanza che unisce due punti nella geometria del taxi, o
equivalentemente la strada che il “taxi” deve percorrere è necessariamente un numero
intero positivo. La geometria che stiamo considerando è discreta e definita sull’insieme
numerico Z.
2 I triangoli equilateri
Nel progetto ci siamo proposti di costruire dei triangoli equilateri partendo da due punti
fissati dall’utente. Per determinare il terzo vertice del triangolo abbiamo utilizzato il metodo delle circonferenze, che consiste nel costruire due cerchi ognuno dei quali centrato
in uno dei vertici scelti e raggio pari alla distanza tra gli stessi. I punti di intersezione
tra le circonferenze sono i punti equidistanti dai due vertici di partenza. Nella geometria
euclidea, se i due vertici non coincidono, le circonferenze hanno sempre esattamente
due punti di intersezione. Nella geometria del taxi ne possono esistere più di due, ciò
dipende da come vengono scelti i vertici di partenza.
Dopo questa considerazione iniziale e dopo aver trovato i vertici del triangolo si è
trattato di costruire i lati ottenuti congiungendo i vertici tra loro per ottenere infine tutti
i possibili triangoli. Il numero dei triangoli che si possono costruire, dati tre vertici,
se la lunghezza del lato è maggiore di 2, è maggiore di uno, questo è dovuto al fatto
che i lati che congiungono due vertici, pur essendo della stessa lunghezza, non hanno
necessariamente la stessa forma. I triangoli che vengono costruiti a partire dai vertici
possono avere area differente, a questo proposito abbiamo focalizzato la nostra attenzione, sulla possibilità di catalogare tutti i triangoli costruiti, per poter stabilire quale è
l’area massima e minima possibile.
2
2.1 La costruzione dei triangoli equilateri
2 I TRIANGOLI EQUILATERI
Algorithm 1 Pseudocodice della funzione di ricerca della strada che congiunge due
vertici
void cammina(Passo passoCorrente)
{
if (distanzaArrivo == 0)
{
// SONO ARRIVATO!
return;
}
strade = trovaPstradePossibili();
foreach (strada in strade)
{
strada.aggiornaStrada();
cammina(strada);
}
}
2.1 La costruzione dei triangoli equilateri
Per costruire un triangolo equilatero è necessario conoscere i vertici che lo compongono;
a questo punto può partire la costruzione di tutti i possibili lati che uniscono i vertici a
due a due. Se per semplicità identifichiamo i vertici con A, B, C si tratterà di costruire
il lato AB, BC ed infine CA. L’algoritmo implementato permette di costruire un lato
per volta e di calcolare tutte le possibili strade del “taxi” che uniscono i due estremi del
cammino.
Ad ogni passo di computazione è necessario conoscere quel è il punto di destinazione e la direzione da prendere per raggiungerlo. E’ immediato verificare che, ad ogni
passo di lunghezza è possibile considerare al massimo due strade possibili. Da questa
considerazione ne deriva che il numero di strade è esponenziale nel numero dei passi:
la base dell’esponente è chiaramente 2. Ad esempio, se la distanza AB misura k passi e
ad ogni passo possiamo identificare 2 strade differenti, ne consegue che il numero totale
di strade che il “taxi” può percorrere per arrivare a destinazione sono al più 2k . Ecco lo
speudocodice utilizzato per la funzione che costruisce i lati del triangolo equilatero.
Una volta costruite tutte le strade che uniscono il primo vertice A con il vertice B
del triangolo, si tratta di richiamare la procedura cammina() per ogni strada trovata. Il
punto di partenza sarà di volta in volta un punto di arrivo, appartenente ad una strada trovata, nella costruzione del lato precedente. Il procedimento si ripete nello stesso modo
per costruire tutti i possibili lati che uniscono il terzo vertice al primo. La costrizione di
tutti i possibili cammini, che uniscono i tre vertici del triangolo è equivalente a costruire
un albero binario di profondità 3 k dove k è la lunghezza del lato. Dalla considerazione precedente sul numero di possibili strade ad ogni punto intermedio del percorso, il
numero di foglie dell’albero binario, ossia il numero totale di strade è al più 23k .
3
3 L’APPLICAZIONE
3 L’applicazione
La scelta del linguaggio di programmazione è ricaduta su Java. L’applicazione consiste
in una java application eseguibile direttamente dall’interfaccia grafica di Windows in
modo semplice.
Ecco brevemente riassunti i passi per utilizzare il programma:
1. Per avviare l’applicazione GeoTa, cliccare sul’archivio GeoTa.jar oppure eseguire
il comando java -jar GeoTa.jar
2. Selezionare 2 punti sulla Griglia, facendo attenzione che siano posti ad una distanza inferiore a 8.
3. Premere il Tasto ’Run’ per effettuare il calcolo di tutti i Triangoli.
4. Scorrere i Triangoli calcolati utilizzando i tasti ’<’ , ’>’ posti nel menù dell’applicazione.
5. Selezionare una voce della ’ComboBox’ del menù, per eseguire una classificazione dei Triangoli in base a : Area Minima, Area Massima e ai vari Punti
C.
6. Terminata la simulazione corrente premere il tasto ’Reset’ per eseguire una nuova
simulazione.
Nella figura 1 si può vedere l’interfaccia grafica dell’applicazione con un triangolo
precedentemente costruito. Il pannello alla destra indica quali sono i vertici del triangolo, l’area e perimetro del triangolo corrente nonché l’area massima e minima trovata
considerando i 3 vertici. E’ possibile colorare l’area del triangolo, visualizzare una sovrapposizione colorata di tutti i triangoli facenti parte del gruppo di triangoli attivi (tutti,
quelli di area massima, quelli di area minima, triangoli aventi un determinato punto C).
In figura 2 è mostrato il contenuto della combo box che permette di selezionare un
sottoinsieme di triangoli dall’insieme di tutti i quelli generati secondo un particolare
criterio.
4
3 L’APPLICAZIONE
Figura 1: screenshot dell’applicazione
Figura 2: screenshot dell’applicazione
5