-1

原点に正方形があります。まず、回転させたいと思います。次に、原点から 5 単位離して平行移動します。

回転後、5 の距離を移動したいのですが、以下のコードを実装すると。それは私が望むところにそれを翻訳しません。翻訳する正しい方法は何ですか。 glTranslatef( 5,5, 5); glRotatef(45, x,y,z);

4

1 に答える 1

0

正方形の中心が原点にある場合は、glTranslatef、次に glRotatef です。

カスタム センターを中心に回転するための一般的な式は次のとおりです。

TranslationFromRotCenterToOrigin * RotationMatrix * TranslationFromOriginToRotCenter

OpenGLで逆の順序で何かを提供します(glTranslatef/glRotatefが現在のOpenGLマトリックスを指定された平行移動/回転マトリックスで乗算するため)

glLoadIdentity();
glTranslatef( 5, 5, 5);
glTranslatef( toRotCenterX, toRotCenterY, toRotCenterZ );
glRotatef( 45, x, y, z );
glTranslatef( -toRotCenterX, -toRotCenterY, -toRotCenterZ );

お役に立てれば

于 2013-10-11T11:33:15.517 に答える