La méthode décrite par MarkusQ fonctionne parfaitement, mais gardez à l'esprit que vous n'avez pas besoin de transformer les trois autres coins si vous avez déjà le point A.
Une autre méthode, plus efficace, consiste à tester dans quel quadrant se trouve votre angle de rotation, puis à calculer directement la réponse. Cette méthode est plus efficace car, dans le pire des cas, vous n'avez que deux instructions if (vérification de l'angle) alors que l'autre approche en a douze (6 pour chaque composant lors de la vérification des trois autres coins pour voir s'ils sont supérieurs au maximum actuel ou inférieurs au minimum actuel), je pense.
L'algorithme de base, qui n'utilise rien d'autre qu'une série d'applications du théorème de Pythagore, est présenté ci-dessous. J'ai dénoté l'angle de rotation par thêta et j'y ai exprimé la vérification en degrés, car c'est du pseudo-code.
ct = cos( theta );
st = sin( theta );
hct = h * ct;
wct = w * ct;
hst = h * st;
wst = w * st;
if ( theta > 0 )
{
if ( theta < 90 degrees )
{
// 0 < theta < 90
y_min = A_y;
y_max = A_y + hct + wst;
x_min = A_x - hst;
x_max = A_x + wct;
}
else
{
// 90 <= theta <= 180
y_min = A_y + hct;
y_max = A_y + wst;
x_min = A_x - hst + wct;
x_max = A_x;
}
}
else
{
if ( theta > -90 )
{
// -90 < theta <= 0
y_min = A_y + wst;
y_max = A_y + hct;
x_min = A_x;
x_max = A_x + wct - hst;
}
else
{
// -180 <= theta <= -90
y_min = A_y + wst + hct;
y_max = A_y;
x_min = A_x + wct;
x_max = A_x - hst;
}
}
Cette approche suppose que vous avez ce que vous dites avoir, c'est-à-dire le point A et une valeur pour thêta qui se situe dans l'intervalle [-180, 180]. J'ai également supposé que thêta augmente dans le sens des aiguilles d'une montre car c'est ce que le rectangle qui a été tourné de 30 degrés dans votre diagramme semble indiquer que vous utilisez, je n'étais pas sûr de ce que la partie à droite essayait de dénoter. Si c'est le mauvais sens, il suffit de permuter les clauses symétriques et le signe des termes st.
1 votes
L'image (Image) n'est pas visible (L'image dit : Cliquez et découvrez Imageshack) ! !!
0 votes
C'est vrai, je me demande si je peux le récupérer à partir des archives de Google ou autre.
1 votes
Quel est le point A ?