Если я сделаю преобразование в NSView
в приложении Cocoa:
self.view.layer.transform = CATransform3DMakeRotation(30 * M_PI / 180, 0, 0, 1);
Я вижу, что квадрат не вращается вокруг оси Z, а вращается так, как будто этот вектор указывает вниз и наружу. мне нужно сделать это
self.view.layer.transform = CATransform3DMakeRotation(30 * M_PI / 180, 1, 1, 1);
чтобы заставить его вращаться вокруг оси Z, как показано на рисунке в этот вопрос.
Однако, если я установлю NSTimer
, а затем обновлю transform
в методе update
, то с помощью
-(void) update:(id) info {
self.view.layer.transform =
CATransform3DMakeRotation(self.degree * M_PI / 180, 0, 0, 1);
self.degree += 10;
}
(на этот раз с использованием (0, 0, 1)
) будет работать: он вращается вокруг оси Z. Интересно, почему (1, 1, 1)
нужен внутри applicationDidFinishLaunching
, а (0, 0, 1)
можно использовать в методе update
?