Mon application permet de faire pivoter des points autour d'un centre en fonction de la position de la souris. Je suis essentiellement en rotation autour des points un autre point comme celui-ci:Aide sur ce problème
void CGlEngineFunctions::RotateAroundPointRad(const POINTFLOAT ¢er, const POINTFLOAT &in, POINTFLOAT &out, float angle)
{
//x' = cos(theta)*x - sin(theta)*y
//y' = sin(theta)*x + cos(theta)*y
POINTFLOAT subtr;
subtr.x = in.x - center.x;
subtr.y = in.y - center.y;
out.x = cos(angle)*subtr.x - sin(angle)*subtr.y;
out.y = sin(angle)*subtr.x + cos(angle)*subtr.y;
out.x += center.x;
out.y += center.y;
}
où POINTFLOAT est tout simplement
struct POINTFLOAT {
float x;
float y;
}
Le problème est que les points doivent être mis à jour sur mousemove. Je cherche un moyen de le faire sans faire ce qui suit:
Store original points
Rotate Original points
Copy result
Show Result
Rotate Original points
Copy result
Show Result....
je me sens le stockage des originaux semble en désordre et utilise la mémoire supplémentaire. Y a-t-il un moyen, en connaissant l'angle de rotation précédent et l'angle actuel, d'éviter en quelque sorte d'appliquer la transformation aux points d'origine tout le temps et de construire sur les points que je modifie?
* le centre ne changera jamais jusqu'à ce que souris vers le haut des thats donc pas un problème
Merci
chaque fois que je vois une question étiquetée à la fois c et C++ ma tête veut exploser – James
sera la tête ['explode()'] (http://php.net/manual/en/function.explode.php) si elle est étiqueté avec [c, C++ et php] (http://stackoverflow.com/questions/tagged/c%20c%2b%2b%20php)? : p – kennytm
En outre, cela semble être une question mathématique, c'est-à-dire que l'on pourrait trouver de meilleures réponses sur math.stackexchange. – James