Salve a tutti, vi chiedo una mano per elaborare un algoritmo.

Avvertenze - Non sono compiti di scuola, di università o cose di lavoro.
L'algoritmo serve semplicemente ad un'altra serie di algoritmi per elaborare, da un modello 3D, la sua silhouette(si scrive cosi?), per poi calcolarne l'ombra tramite una tecnica...bla bla...jada jada...

Avendo un array di UINT, contententi dei numeri interi, ove ogni 3 numeri interi formano un triangolo, dovrei elaborare un algoritmo che trovi le adiacenze del triangolo.
Un triangolo è adiacente ad un altro se hanno almeno un lato in comune.

Ogni triangolo ha massimo 3 adiacenze.


Dovrei quini cercare, per ogni tripla di indici, un'altra tripla che condivide almeno 2 indici.
Le dimensioni del buffer (già si sa), dovranno raddoppiare per conterene i nuovi dati.

Altra cosa pallosa è il contenere i dati nuovi.
Guardando l'immagine sopra, i dati dovranno essere contenuti in modo che, in ogni 6 posizioni dell'array, nelle posizioni pari ci siano i vertici originali del triangolo, nei dispari i 3 vertici delle adiacenze.

Io ci sto proprio perdendo la testa, ho abbozzato una specie di ciclo, ma non so proprio cosa scrivere dentro....

Avede un'idea anche solo teorica di come risolvere questo problema?