美文网首页
iOS绕X轴旋转

iOS绕X轴旋转

作者: Chase_Eleven | 来源:发表于2018-05-07 19:16 被阅读0次

没有近大远小的效果

- (void)downAnimation {
    _photoImageView.layer.transform = CATransform3DMakeRotation(0, 1, 0, 0);
    
    [UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
        _photoImageView.layer.transform = CATransform3DMakeRotation(M_PI / 4, 1, 0, 0);
    } completion:^(BOOL finished) {
        _photoImageView.layer.transform = CATransform3DMakeRotation(0, 1, 0, 0);
    }];
}

实现近大远小效果

- (void)downAnimation {
    CATransform3D rotate = CATransform3DMakeRotation(0, 1, 0, 0); //角度,X轴,Y轴,Z轴
    _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    
    [UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
        CATransform3D rotate = CATransform3DMakeRotation(M_PI / 4, 1, 0, 0);
        _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    } completion:^(BOOL finished) {
        CATransform3D rotate = CATransform3DMakeRotation(0, 1, 0, 0);
        _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    }];
}

- (void)upAnimation {
    CATransform3D rotate = CATransform3DMakeRotation(M_PI / 4, 1, 0, 0);
    _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    
    [UIView animateWithDuration:1.5 delay:0 options:UIViewAnimationOptionRepeat animations:^{
        CATransform3D rotate = CATransform3DMakeRotation(0, 1, 0, 0);
        _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    } completion:^(BOOL finished) {
        CATransform3D rotate = CATransform3DMakeRotation(M_PI / 4, 1, 0, 0);
        _photoImageView.layer.transform = CATransform3DPerspect(rotate, CGPointMake(0, 0), 120);
    }];
}

- (void)endAnimation {
    [_photoImageView.layer removeAllAnimations];
}
//disZ,表示观察者到投射面的距离,值越小,近大远小效果越明显
CATransform3D CATransform3DMakePerspective(CGPoint center, float disZ)
{
    CATransform3D transToCenter = CATransform3DMakeTranslation(-center.x, -center.y, 0);
    CATransform3D transBack = CATransform3DMakeTranslation(center.x, center.y, 0);
    CATransform3D scale = CATransform3DIdentity;
    scale.m34 = -1.0f/disZ;
    return CATransform3DConcat(CATransform3DConcat(transToCenter, scale), transBack);
}

CATransform3D CATransform3DPerspect(CATransform3D t, CGPoint center, float disZ)
{
    return CATransform3DConcat(t, CATransform3DMakePerspective(center, disZ));
}

向上.gif

相关文章

  • 绕坐标轴旋转的旋转曲面方程

    绕X轴旋转 绕y轴旋转 绕z轴旋转

  • 三维变换与投影

    三维几何的矩阵变换: 平移变换: 比例变换: 绕X轴旋转: 绕Y轴旋转: 绕Z轴旋转: X轴反射变换: Y轴反射变...

  • iOS绕X轴旋转

    没有近大远小的效果 实现近大远小效果

  • (六)旋转体的体积公式

    绕X轴旋转的旋转体体积公式 绕y轴旋转的旋转体的体积公式

  • 前端 检测设备方向

    事件:deviceorientation 事件值:alpha,绕z轴旋转 事件值:bata,绕x轴旋转 事件值:g...

  • RPY roll pitch yaw

    roll代表绕z轴旋转,pitch代表绕x轴旋转,yaw代表绕y轴旋转,下面是我们俗称的在飞机坐标系下的RPY 欧...

  • CSS 3D旋转例子

    html中 CSS中 绕x轴(烤羊腿方向顺时针)转45度,代码如下 绕x轴,y轴,z轴旋转45度,坐标轴会变动 绕...

  • 单位向量旋转N度后的新单位向量值

    这边以绕y轴旋转为例,还有绕x、z轴的 这个方法会影响其他轴,不是很好用!!!

  • 曲面方程及其图像

    我看网上教程太少,就发发,比较简单。 球面的方程 旋转曲面f(x,y)绕x轴旋转,得 柱面在z轴方向上的柱面: 二...

  • Android动画总结二

    官方文档 一. 属性动画 1. ObjectAnimation // 绕x轴旋转的度数。ObjectAnimato...

网友评论

      本文标题:iOS绕X轴旋转

      本文链接:https://www.haomeiwen.com/subject/lljvrftx.html