La transformation d'un rectangle de l'image d'un quadrilatère à l'aide d'un CATransform3D

J'ai une image et d'un ensemble de quatre points (décrivant un quadrilatère Q). Je veux transformer cette image, de sorte qu'il s'adapte à la forme de quadrilatère Q. Photoshop appelle cette transformation "et de la distorsion." Mais, selon la source de ce quadrilatère (le point de vue de l'image en mouvement dans l'espace), il est en fait la combinaison d'une échelle, d'une rotation et d'un point de vue de la matrice.

Je me demande si c'est possible à l'aide d'un CATransform3D matrice 4x4. Avez-vous des conseils sur la façon de le faire? J'ai essayé de prendre les quatre points et construire 16 équations (de A' = A x u) mais il ne fonctionne pas: je ne suis pas sûr de ce que je dois utiliser comme z, z', w et w' coefficients...

L'image ci-dessous montre ce que je veux faire:

La transformation d'un rectangle de l'image d'un quadrilatère à l'aide d'un CATransform3D

Voici quelques exemples de points:

276.523, 236.438,   517.656, 208.945,   275.984, 331.285,   502.23,  292.344
261.441, 235.059,   515.09,  211.5,     263.555, 327.066,   500.734, 295
229.031, 161.277,   427.125, 192.562,   229.16, 226,        416.48,  256
  • Je ne pense pas que vous allez trouver une meilleure réponse à ce que KennyTM sur la question similaire, l'iPhone l'image s'étendant (skew). Le math il nous présente, il devrait être suffisant pour créer un arbitraire quadrilatère comme un résultat de l'application d'un CATransform3D à un CALayer.
  • pour une raison étrange, la réponse de KennyTM ne semble pas fonctionner. Nous obtenons une matrice 3D, mais il donne mannequin résultats lorsqu'ils sont administrés à CoreAnimation...
  • Ce faisant inverse de la transformation de l'quadrilatère à rect?
  • Je pense que le cvFindHomography() OpenCV fonction également de travailler de cette façon.
  • et les autres, KennyTM est incroyable de code à partir de 5 ans, il est certainement un peu une corvée pour se rendre au travail dans la pratique, car il existe une certaine confusion avec ABCD rapport à l'ABDC de la commande, la traduction, etc ... dieu merci, JoshRL ci-dessous a fait tout le travail dur et créé un parfait abandon de classe basée sur la KTM de mathématiques. Il y a maintenant une Swift version qui fonctionne parfaitement et est testé beaucoup de choses stackoverflow.com/a/18606029/294884
InformationsquelleAutor MonsieurDart | 2012-02-27