CGAffine Trasforma da due linee, ciascuna rappresentata da una coppia di CGPoints
-
10-07-2019 - |
Domanda
Probabilmente puoi vedere dove sto andando con questo - ma esiste un modo facile per generare una CGAffineTransform da due linee - ognuna rappresentata da una coppia di CGPoints:
A[(a1x,a1y), (a2x,a2y)],
B[(b1x,b1y), (b2x,b2y)]
La risultante CGAffineTransform quando applicata alla linea A produrrebbe ovviamente la linea B. Potrebbe potenzialmente comportare traslazione, scala e rotazione.
Certamente spero di essere in grado di scriverlo da solo dopo aver ripassato alcuni trigoni, ma mi chiedevo se fosse già disponibile qualcosa per farlo?
Nota: non ti sto chiedendo di scriverlo per me - non voglio proprio perdere un trucco Core Graphics!
Soluzione
Sì, ma ci sono almeno quattro soluzioni: due traduzioni e due scale (una per operazione e direzione). Questo senza contare le trasformazioni che traducono entrambe la scala e .
& # 8220; The Math Behind the Matrices & # 8221; , dal Quartz 2D Programming Guide , è una buona panoramica di come funziona ogni operazione; da ciò, dovrebbe essere abbastanza semplice capovolgerlo e creare una matrice per l'operazione e la direzione desiderate.
Sicuramente spero di essere in grado di scriverlo da solo dopo aver ripassato alcuni trig & & # 8230;
Non ti servirà tranne la rotazione.