Iphone 三维立方体问题,第2部分
这是我关于iphone中3D立方体的第二个问题,使用CALayer,核心动画框架,用Objective-c编写。关于我的第一个问题,请访问这里 我正在使用Brad Larsons代码从此链接旋转我的3D立方体 问题是我的立方体在x轴上沿着图中所示的粉色线旋转 但是我想沿着图中所示的黑线绕x轴旋转它。Iphone 三维立方体问题,第2部分,iphone,objective-c,core-animation,calayer,cube,Iphone,Objective C,Core Animation,Calayer,Cube,这是我关于iphone中3D立方体的第二个问题,使用CALayer,核心动画框架,用Objective-c编写。关于我的第一个问题,请访问这里 我正在使用Brad Larsons代码从此链接旋转我的3D立方体 问题是我的立方体在x轴上沿着图中所示的粉色线旋转 但是我想沿着图中所示的黑线绕x轴旋转它。 现在在我的代码中,我没有在我的视图上画任何粉线或黑线,所以请有人帮我解决这个问题 如果有帮助,下面是在touchsmoved:method中旋转多维数据集的代码 - (void)touchesM
现在在我的代码中,我没有在我的视图上画任何粉线或黑线,所以请有人帮我解决这个问题 如果有帮助,下面是在
touchsmoved:
method中旋转多维数据集的代码
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
CGPoint location = [[touches anyObject] locationInView:self];
CATransform3D currentTransform = currentLayer.sublayerTransform;
CGFloat displacementInX = location.x - previousLocation.x;
CGFloat displacementInY = previousLocation.y - location.y;
CGFloat totalRotation = sqrt(displacementInX * displacementInX + displacementInY * displacementInY);
CGFloat x = (displacementInX/totalRotation) * currentTransform.m12 + (displacementInY/totalRotation) * currentTransform.m11;
CATransform3D rotationalTransform = CATransform3DRotate(currentTransform, totalRotation * M_PI / 180.0, x, y, 0);
currentLayer.sublayerTransform = rotationalTransform;
}
previousLocation是一个在touchsbegind:
方法中初始化的CGPoint
,currentLayer是我创建此多维数据集的CALayer
谢谢你的帮助
注:如果您想知道我是如何创建这个立方体的,请告诉我将andchorPoint设置为中心;如果是和一个菜鸟打交道的话
[myLayer setAnchorPoint:CGPointMake(0.5, 0.5)];
看起来您需要先平移层,然后再旋转层 您可以先使用CATTransferorM3dTranslate将层从其自然原点移开,然后再使用CATTransferorM3dRotate,而不是拾取轴/锚点
看看您是如何构建多维数据集的,以确定它是如何实现的,这会有所帮助。没有人会沿着图中的那条粉色线旋转。我很想知道您是如何创建多维数据集的。我正试图对你做类似的事情。到目前为止有什么进展吗?我已经完成了这个项目,但我想我可以给你一个在石英核心中制作立方体的代码。嘿,我得到了一个非常类似的代码,在3D中旋转
CALayer
,等等,但是我按照Simon Lee的建议,通过改变主播点来解决了这个问题。你一定是做错了什么。请分享层结构代码,我会解决它。。。或者,如果需要的话,我可以做我自己的立方体。那不是真的,我已经试过了,结果还是一样的。也许我还遗漏了一些东西。那么,你是要分享代码,还是我应该构建一个3D立方体并旋转它?让我试试,然后在这一次给你回复。嘿,这确实奏效了,谢谢你的帮助。不知道会这么简单。谢谢