Esto no parece posible, y estoy seguro de que hay una solución simple pero no puedo trabajar. Mi Escuela secundaria de la matriz de matemáticas es un poco pasado de moda 🙂

Estoy construyendo una CGAffineTransform para hacer la traducción-rotación-traslación de un CGRect y, a continuación, tratando de utilizar la inversa de la CGAffineTransformInvert para volver a la ubicación original. Pero no es así. He conseguido reducir a esto:

// start building the transform...
// translate so (0,0) is at centre of image
CGAffineTransform affine = CGAffineTransformMakeTranslation(-100, -100);

// add a rotate
affine = CGAffineTransformConcat(affine, CGAffineTransformMakeRotation(M_PI/4));

// get the inverse
CGAffineTransform inverseAffine = CGAffineTransformInvert(affine);

// now test this: pick a starting CGRect
CGRect start = CGRectMake(50, 40, 10, 20);

//use my CGAffineTransform to move "start" to "midpoint"
CGRect midpoint = CGRectApplyAffineTransform(start, affine);

// use the inverse to move "midpoint" to "finish"
CGRect finish = CGRectApplyAffineTransform(midpoint, inverseAffine);

// what did we get
NSLog(@"start    %5.1f %5.1f %5.1f %5.1f", start.origin.x, start.origin.y, start.size.width, start.size.height);
NSLog(@"midpoint %5.1f %5.1f %5.1f %5.1f", midpoint.origin.x, midpoint.origin.y, midpoint.size.width, midpoint.size.height);
NSLog(@"finish   %5.1f %5.1f %5.1f %5.1f", finish.origin.x, finish.origin.y, finish.size.width, finish.size.height);

La salida se parece a esto:

2011-09-29 ... start     50.0  40.0  10.0  20.0
2011-09-29 ... midpoint  -7.1 -77.8  21.2  21.2
2011-09-29 ... finish    40.0  35.0  30.0  30.0

No el acabado rect ser la misma que la de inicio? No es que lo CGAffineTransformInvert se supone que debe hacer?

Si yo hago lo mismo pero con un CGPoint en lugar de un CGRect parece que funciona ok.

OriginalEl autor Steve Rogers | 2011-09-28

2 Comentarios

  1. 7

    Copiado de documentación:
    Usted puede operar en un CGRect estructura llamando a la función CGRectApplyAffineTransform. Esta función devuelve el menor rectángulo que contiene la transformada puntos de esquina del rectángulo que se ha pasado. Si la transformación afín que opera en el rectángulo realiza sólo la escala y la traslación de las operaciones de, que devuelve el rectángulo coincide con el rectángulo construido a partir de los cuatro transformado esquinas.

    Usted verá que yo ya había descubierto que la solución, pero gracias por recordarme que acepte!

    OriginalEl autor Hitesh Savaliya

Dejar respuesta

Please enter your comment!
Please enter your name here