原点に正方形があります。まず、回転させたいと思います。次に、原点から 5 単位離して平行移動します。
回転後、5 の距離を移動したいのですが、以下のコードを実装すると。それは私が望むところにそれを翻訳しません。翻訳する正しい方法は何ですか。
glTranslatef( 5,5, 5); glRotatef(45, x,y,z);
正方形の中心が原点にある場合は、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 );
お役に立てれば