Esta es mi segunda pregunta sobre cubos 3D en iphone usando CALayer, Core Animation framework, escrito en Objective-c. Para mi primera pregunta, visite aquí 3D Cube Problem! Part 1.Problema 3D Cube, Parte 2
estoy usando código de Brad Larsons para girar mi cubo 3D desde este enlace
http://www.sunsetlakesoftware.com/2008/10/22/3-d-rotation-without-trackball
El problema es que mi cubo está girando en el eje X a lo largo de la línea rosa se muestra en la figura.
Pero quiero hacerlo girar alrededor del eje X a lo largo de la línea de negro se muestra en la figura.
Ahora en mi código no tengo ninguna línea rosa o línea negra dibujada en mi vista así que alguien me puede ayudar con esto.
Si ayuda aquí está el código para hacer girar mi cubo en touchesMoved:
método
- (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 es un CGPoint
inicializado en touchesBegan:
método y currentLayer es CALayer
donde he creado este cubo.
Gracias por su ayuda.
PS. Si desea saber cómo he creado este cubo, hágamelo saber
Me encantaría saber cómo se creó el cubo. Estoy tratando de hacer algo similar a ti. ¿Algún progreso hasta ahora? – Jeremy
retoqué el proyecto pero creo que podría darte el código para hacer un cubo en núcleo de cuarzo. – Robin
Oye, obtuve un código muy similar, rotando 'CALayer' en 3D y todo, pero resolví el problema cambiando el' anchorPoint' como sugirió Simon Lee. Debes haber hecho algo mal con eso. Por favor, comparta el código de construcción de la capa, y lo resolveré ... O bien, puedo hacer mi propio cubo si es necesario. – Mazyod