OOOOOttimi passi avanti!
Ovviamente non funziona ancora, ma questa volta davvero si vede la luce in fondo al tunnel.
Ora posso dire con assoluta certezza (ahahaha come no) che i calcoli sono corretti! Pxx Pxy risultano sempre coerenti.
Il solo problema è che ancora una volta il funzionamento del tag g non è quello che mi aspettavo, e trovare documentazione su come cambia il sistema di coordinate relativo all’interno del tag g non è facile. Ma non si tratta più di un problema di calcoli o di algoritmo! Ora devo solo capire da che punto applicare le coordinate dei disegni e poi tutto funziona.
Sembrerebbe che il tag g viene inizializzato meno volte possibile, significa che finché il primo disegno è presente, sarà lui a determinare il punto di origine di tutto il tag g. Finora se volevo aggiungere 3 disegni alle coordinate x assolute -1 -5 e -10, li visualizzavo passando -1 -4 e -5, perché pensavo che ogni nuovo disegno ridefinisse le coordinate dell’intero gruppo. Invece devo richiamarli con -1 -4 e -9, perché l’origine è stata settata solo la prima volta.
Questo almeno finchè il disegno di origine non viene rimosso. In quel caso il nuovo punto di origine diventa il px più in alto a sinistra di tutti i disegni del gruppo. Potrei cercare di stare dietro a tutti questi cambiamenti, ma troppo sbatti.
Quindi la nuova idea è di aggiungere un elemento fasullo al tag g, tipo un rect di 1 px X 1 px (meglio 0 X 0 se funziona comunque) nella funzione GoToXY, e non rimuoverlo mai. Così dovrei avere un punto di riferimento fisso per sempre, fino al prossimo salto ad un altro punto della lavagna. E se lo imposto alle coordinate correnti della lavagna mi semplifico di molto i calcoli perché potrei usare direttamente la x e la y assolute che ricevo dal server moltiplicandole per lo scale. Potrebbe funzionare! E semplificarmi di molto la vita.