围绕y轴旋转两个图像,使得它们的边界相交

时间:2014-03-08 04:18:00

标签: ios opengl-es rotation core-animation calayer

我有两张图片:

enter image description here

我将左图像(旋转点是其左边缘)围绕y轴旋转30度,右图像(旋转点是右边缘)围绕y轴旋转-30度以获得以下输出: enter image description here

现在我希望图像保持连接在一起,就像它们在旋转之前一样,但是当你看到它们之间出现间隙时,我想我可以通过将左图像向右移动来实现。将右图像向左移动直到两个图像彼此相遇。我认为以下公式应该给我正确的翻译价值,但它不起作用,但仍然缺少某些东西。

translationValue = (widthOfImage - (cos(30) x widthOfImage))

我认为上述公式不起作用,因为没有考虑图像的深度。如何解决这个问题?

由于我试图解决的问题的性质,我无法将左图像的旋转点更改为其右边缘&右图像的旋转点为其左边缘。

3 个答案:

答案 0 :(得分:0)

图像框是否会改变整体宽度,或者只是图像更改,如果是这样,那就是你的问题。至于你的翻译,可能是罪(30)而不是cos。

答案 1 :(得分:0)

将2个视图从共享边缘朝向观察者向上旋转可能更容易,同时还沿Z轴向后平移它们,使得前缘保持在屏幕的表面。

这样,2个视图将保持链接在一起,没有任何间隙或重叠。

棘手的部分是让Z翻译的时机正确。前缘Z的变化应遵循正弦曲线。您可能需要使用视图Z坐标的关键帧动画,并创建一个与正弦曲线非常接近的贝塞尔曲线。

答案 2 :(得分:0)

解决方案是使用CATransformLayer和子图层如果你同时为动画制作旋转:你创建了一个子图层的父图层,所以当你旋转父图像时,孩子会粘在一起并且也会与父图像一起旋转,那么你只能旋转孩子背部。

请参阅此链接以获取代码段:https://stackoverflow.com/a/5539618/550393