L'applicazione non è completa, ci sono ancora un po' di cose che non funzionano e altre da sistemare meglio, ma in generale è già operativa.
Per chi fosse curioso e non avesse voglia di leggere tutto il pippone di programmazione che segue vi allego il link per iniziare a giocare:
FREMO Layout Designer - Fonte layoutdesigner.altervista.org
Per chi avesse voglia di approfondire vi spiego l'approccio che ho usato.
Partiamo dal layout designer per il modulare a norma FIMF.
In questo caso la disposizione dei moduli è molto rigida perché le testate asimmetriche non permettono l'inversione dei moduli e in pratica abbiamo solo 3 tipologie di moduli:
- rettilineo
- curva di 90°
- cappio
Con queste restrizioni l'algoritmo che definisce la modalità di aggancio tra i moduli è relativamente semplice perché è fissa: due moduli si possono collegare solo in una configurazione.
Il modulare FREMO lascia molta più libertà:
- testate simmetriche sia da 50cm che da 30cm
- possibilità di inversione dei moduli
- moduli di tipologie più diverse:
- curve da 30° 45° 60° 90° ecc.
- Bivio (geometria libera)
- moduli di raccordo 50-30
- possibilità di aggancio testate di tipologie diverse
- avanti con la fantasia!
Tutta questa libertà complica notevolmente l'algoritmo di aggancio tra i moduli quindi mi sono rivolto ... all'AI!
Questo è il nuovo algoritmo che abbiamo elaborato (dico abbiamo per tenermi un minimo di merito
Tutto si basa sulla posizione delle testate di un modulo e la loro inclinazione rispetto alla testata di "ingresso", ed il punto di aggancio è il centro di ogni testata, dove mettiamo il binario.
Quindi la definizione di un modulo nel database richiede anche la definizione della posizione delle sue testate
Per esempio un bivio a 3 vie di questo tipo, lungo 100cm per 100cm richiede la definizione delle 4 testate:
Testata A
posizione X: 0
posizione Y: 0
inclinazione: 0°
Testata B
posizione X: 100
posizione Y: 0
inclinazione 180° (in opposizione alla testata A)
Testata C
posizione X: 50 cm
posizione Y: +50 cm
inclinazione: 90°
Testata D
posizione X: 50 cm
posizione Y: -50 cm
inclinazione: 270°
Quando 2 testate di 2 moduli diversi sono sufficientemente vicine "scatta" il meccanismo di aggancio e allineamento (SNAP).
Nota: Il pulsante Snap di colore arancione permette di disabilitare l'automatismo
Ho finito con lo spiegone, se avete suggerimenti e nuove funzionalità da aggiungere fatelo presente che con l'aiuto di AI proveremo ad implementarle.