0

プロジェクトでオブジェクトを使用して回転アニメーションを作成しようとしています。

value from, value to, value time現在、オブジェクトをアニメーション化するために、パラメータを取得して、指定された時間内のオブジェクトの動きからオブジェクトfrom Paramへの移動とオブジェクトの移動をトゥイーンするトゥイーン関数をいくつか作成しto Paramました。ただし、次のようなアニメーションを作成する必要があります。

ここに画像の説明を入力してください

オブジェクトは、特定の側面を中心に回転してトゥイーンする必要があります。したがって、このアルゴリズムを使用すると、次のようになります。

for(int rotationAmount = 0;rotationAmount<=90;rotationAmount++){
glPushMatrix();
glRotatef(rotationAmount,1,0,0);
Rectangle(500,500,200,100);
glPopMatrix();
}

特定の側面を中心に回転するのではなく、長方形が大きな円の周囲を中心に回転して戻ってくるように見えるため、まだ必要な効果が得られません。上記を達成する方法について、ここでいくつかの提案を本当に歓迎しますか?

4

1 に答える 1

2

glRotatefは、現在の行列に回転行列を掛けます。回転行列は、座標の原点を中心に回転します。オブジェクトの側面にorignを変換し、回転を実行し、逆変換する必要があります。

point_type point_on_the_side;
for(int rotationAmount = 0;rotationAmount<=90;rotationAmount++){
    glPushMatrix();
    glTranslatef(-point_on_the_side.x, -point_on_the_side.y, -point_on_the_side.z);
    glRotatef(rotationAmount,1,0,0);
    glTranslatef(point_on_the_side.x, point_on_the_side.y, point_on_the_side.z);
    Rectangle(500,500,200,100);
    glPopMatrix();
}
于 2012-12-01T07:51:42.223 に答える