我正在使用 OpenGL ES 2.0 来显示一个 3 维立方体,我以某个视角显示该立方体,并围绕 x、y、z 轴旋转。
@interface OpenGLView : UIView
OpenGLView *openGLRotate = [[OpenGLView alloc] initWithFrame:screenBounds];
[openGLRotate setupDisplayLink:NO Face:face Direction:direct];
- (void)setupDisplayLink:(BOOL)bFlag Face:(CubeFace)f Direction:(CubeDirection)d
{
CADisplayLink* displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(renderRotate:)];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
我想围绕垂直于面部的轴旋转立方体,该轴不是 x、y 或 z 轴。
看到立方体的默认透视已经围绕 x,y,z 轴旋转,围绕特定面的轴旋转涉及同时改变 x,y,z 轴值以达到我正在寻找的效果为了。
// code in renderRotate
//[modelView rotateBy:CC3VectorMake(20, -45, -20)]; // default perspective
[modelView rotateBy:CC3VectorMake(20 + x, -45 + y, -20 + z)];
我已经阅读了有关向量和矩阵以及四元数和欧拉角的内容,我感到更加困惑而不是更少。
我不确定如何确定旋转的 x、y、z 值。任何有关如何计算这些值的指导将不胜感激,或者我应该采取另一种方法吗?