我最近開始使用iPhone的OpenGL ES,並且遇到了一些問題。我希望能夠用手指旋轉物體。我的問題是我把我的對象放置在(0,0,-3),我想旋轉它的中心。我知道我需要翻譯回原點,旋轉,然後將其帶回原來的位置。我認爲我面臨一個問題,因爲我正在使用一個矩陣來跟蹤(?)我所有的旋轉/平移/縮放等,我認爲它可能會以一種甚至沒有考慮到順序的方式組合操作(所以這兩個翻譯會相互抵消)。我剛剛開始學習OpenGL,並且是一個完整的新手,所以我的假設可能是錯誤的。在OpenGL ES for iPhone中旋轉對象[翻譯爲原點 - >旋轉 - >翻譯不起作用]
這裏是在drawView函數,我遇到的麻煩的一部分:
GLfloat matrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, matrix);
glLoadIdentity();
glTranslatef(0, 0, 3); // bring to origin
glRotatef(self.angle, self.dy, self.dx, 0); // rotate
glTranslatef(0, 0, -3); // put it back in place
glMultMatrixf(matrix); // save the transformations performed
幫助將不勝感激,謝謝!
把變換串起來很好。這就是矩陣如何轉換的工作。究竟是不是在工作呢? – Alan 2010-06-17 01:50:53
即使使用glTranslatef(0,0,3),它似乎就像我在翻譯之前要求它旋轉一樣。因此,如果我要求它相對於(1,0,0)旋轉,在平移到原點後,我會期望它相對於其中心旋轉,但它繞着一個大圓而不是旋轉。 – 2010-06-17 02:05:37