Calculating layer's CATransform3D transformations

  • Hello,

    the questions are:
    1. What equations are used to transform CALayers in 3D space and project their 2d point {x, y, z} to the 2D surface {x, y} ?

    All equations that I've found to project 3D points onto 2D space aren't the same with what CALayers use.
    My solve is to get one coordinate {x, y} where -1 < x < 1 and -1 < y < 1  and, using 3D affine transforms, apply layer's transforms to point and then make it 2D:
    CGFloat pointX = transformPCM.m11 * point.m1 + transformPCM.m12 * point.m2 + transformPCM.m13 * point.m3 + transformPCM.m14 * point.m4;
    CGFloat pointY = transformPCM.m21 * point.m1 + transformPCM.m22 * point.m2 + transformPCM.m23 * point.m3 + transformPCM.m24 * point.m4;
    CGFloat pointZ = transformPCM.m31 * point.m1 + transformPCM.m32 * point.m2 + transformPCM.m33 * point.m3 + transformPCM.m34 * point.m4;

    CGFloat newX = (pointX) / (pointZ);
    CGFloat newY = (pointY) / (pointZ);

    2. What is m34 parameter of CATransform3D struct? I understood that it is for translating point by z axis just like m24 for y axis and m14 for x axis, BUT!...  in equations from above it doesn't make any sense, whereas CALayer's transformation is being changed according to zDistance (m34 = 1 / (-zDistance) as Apple Core Animation documentation says)

    Any advice would be helpful)

    Thank you,
    Kirill
previous month may 2012 next month
MTWTFSS
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
Go to today