Hmm, you’ll need to use the CGAffineTransform because it has a richer set of 
functions than CATransform3D. This will only work if the 3D transform can be 
converted to a CGAffineTransform, which it can if the rotation is purely in the 
2D plane - i.e. no Z transformations.


CGAffineTransform cgt = CATransform3DGetAffineTransform( myLayer.transform );

CGPoint newPt = CGPointApplyAffineTransform( CGPointMake( 100, 0 ), cgt );      
// this point only has an x value, so its angle is 0. The value doesn’t matter

CGFloat angle = atan2( newPt.y, newPt.x );



You can probably do the same by getting values out of the transform directly as 
you tried, except that you really have to know your trig. The values in there 
(which?) represent sin and cos of the angle, so in theory using tan(x) = 
sin(x)/cos(x) you could get the angle that way, but I prefer to treat 
transforms as black boxes and just transform a known point and see where it 
ends up. That way you don’t need to know how the transform’s internals are laid 
out.


> On 15 Mar 2017, at 2:41 PM, Eric E. Dolecki <edole...@gmail.com> wrote:
> 
> I don't follow.
> 
> On Tue, Mar 14, 2017 at 11:29 PM Graham Cox <graham....@bigpond.com> wrote:
> Get the final transform, then use it to transform an angle of 0. The result 
> is the angle.
> 
> —Graham


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to