これが最も効率的な方法であれば、私は知りませんが、私はちょうど、頂点の新しい位置を計算し、そのデータに基づいてAABBを見つけるでしょう。たとえば、
Vertex v0, v1, v2, v3;
// in the local coordinates of the rectangle
// so for example v0 is always 0,0 and width and height define the others
// put some values to v0..v3
glLoadIdentity();
glTranslatef(the position of the rectangle);
glTranslatef(center_point);
glRotatef(angle, 0,0,1);
glTranslatef(-center_point);
GLfloat matrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, matrix);
v0 = multiply_matrix_by_vector(matrix, v0);
v1 = multiply_matrix_by_vector(matrix, v1);
v2 = multiply_matrix_by_vector(matrix, v2);
v3 = multiply_matrix_by_vector(matrix, v3);
AABB = find_the_minimums_and_maximums(v0, v1, v2, v3);
ベクトルで行列を乗算する方法がわからない場合は、googlingしてください。
また、行列の寸法が4×4であるため、頂点のベクトルも4次元である必要があります。 3番目のコンポーネント0(ゼロ)と4番目のコンポーネント1(1)を追加して、2Dベクトルを4Dベクトルに変換できます。乗算が完了したら、xおよびy成分を4番目の成分で除算し、3番目の成分が不要なため3番目の成分を無視することで、結果の4Dベクトルを2Dに戻すことができます。
行列の乗算は非常にプロセッサー重い操作である可能性があるので、多くのAABBを非常に頻繁に更新する必要がない場合は、この方法が有効です。
使い慣れていない人には、AABB = "軸に合わせた境界ボックス"と言えるでしょうか? –