La matematica con due dita (supponendo che alcune API ti diano sempre il centro di entrambe le dita) è piuttosto semplice, ma ottieni più di una semplice svolta. Si ottiene il ridimensionamento e la traslazione del movimento. Star con P1 (0) (x1 (0), Y1 (0)) e P2 (0) (x2 (0), Y2 (0)). Quindi calcola Pc = (P1 + P2) / 2. Dopodiché regola tutte le coordinate successive in modo tale che Pc (centro) sia a (0, 0) sottraendo Pc da ogni punto. Dopodiché dovresti essere in grado di calcolare il modo in cui ciascuna delle dita ruotava attorno al centro: quanto ridimensionava e quanto girava con ogni passo. Si noti che l'utente potrebbe aver fatto scorrere entrambe le dita. Pensa guardando un uragano in movimento su uno schermo radar: si gira, si muove, si disperde e si allarga o diventa più piccolo. Se quel movimento scorrevole è significativo, potresti voler calcolare dinamicamente il centro.
Ora, con N misurazioni di coppie di punti P1 e P2, dovresti avere dati su come il centro scorreva, come girava e come cambiava il raggio. Stai cercando una piccola espansione scorrevole, un raggio ridotto e un aumento / diminuzione lineare dell'angolo con il tempo. Vorrei filtrare un grande rumore e quindi provare a vedere come si può adattare una linea retta nel grafico dell'angolo, e quanto bene una linea lo approssima. Bene ... l'utente può cambiare la velocità di rotazione. Qualcosa che nessuna biblioteca generica può fare per te è decidere le regole per quando ignorare un gesto. È necessario fornire maggiori informazioni su come è la rotazione della manopola. Spero che ci siano solo 2 dita coinvolte. Stai provando a misurare questa svolta o semplicemente a rilevare il movimento?
EDIT: Pensando all'uragano un po 'di più, penso che abbia senso calcolare il nuovo centro ad ogni passo. Tuttavia, se un dito non si muove, ma l'altro traccia un cerchio, allora è un tipo diverso di movimento rispetto al girare la manopola. Se lo si modella ancora come una manopola, verrà interpretato come spostamento con rotazione lenta anziché rotazione più veloce attorno a un punto statico.
Ancora una volta, la matematica non è necessariamente complicata. È solo una matrice di trasformazione 2d + vettore di offset. Ma quando più di un dito è coinvolto, la domanda diventa: qual è il "centro" su cui viene eseguita la trasformazione? Potrebbe essere 4 angoli dello schermo, il centro del dito 1, il centro del dito 2, il punto intermedio tra due dita o altro. Il modo in cui interpreti il movimento dipenderà dalla scelta del centro. Potrebbe non avere molta importanza se gli utenti possono facilmente apprendere e modificare il proprio movimento per farlo funzionare correttamente. Ma vuoi comunque fare la migliore ipotesi su come stanno pianificando esattamente l'uso del software e quali altri gesti ci sono.