Bonjour,
Je voulais faire un zoom sur les fractales. Pour cela, je me suis dit, c'est simple, l'utilisateur va faire un rectangle de la nouvelle zone zoomé. De cette zone, on calculera la proportion de la zone, par rapport à l'écran, et on rapporte cette proportion sur les paramètres du calcul des fractales.
En ce moment, cela fonctionne plutot bien. Mais pas assez bien ( sinon, je ne serais pas en train de poster ).
Au bout du deuxième zoom, ( un zoom, puis un autre zoom sur l'image zoomer ), je commence à avoir une décalage ( entre ce que l'utilisateur veux, et ce que j'affiche une fois zoomé. Je me demande pourquoi, et j'arrive pas à trop savoir pourquoi. Mon calcul est le suivant ( il doit être faux :s ):
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 newParams.zX = ( ( start.x() / static_cast<double>(params.iWidth)) * params.zWidth) + params.zX; newParams.zY = ( ( start.y() / static_cast<double>(params.iHeight)) * params.zHeight) + params.zY; newParams.zWidth = (( end.x() - start.x() ) / static_cast<double>(params.iWidth)) * params.zWidth ; newParams.zHeight = (( end.y() - start.y() ) / static_cast<double>(params.iHeight)) * params.zHeight ;
end et start sont des QPoint, qui représente le début et la fin de la selection de l'utilisateur.
params, sont les paramètres de la fractale précédente.
newParams sont les paramètres de la fractale actuelle.
Voici la structure pour les paramètres:
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 struct Params { unsigned int iWidth; /*!< Largeur de l'image */ unsigned int iHeight; /*!< Hauteur de l'image */ double zX; /*!< Valeur réelle la plus petite de la zone complexe */ double zY; /*!< Valeur complexe la plus petite de la zone complexe */ double zWidth; /*!< Largeur de la zone complexe */ double zHeight; /*!< Hauteur de la zone complexe */ };
Le start est toujours plus petit que le end ( même si l'utilisateur construit le rectangle en partant de la fin ).
Merci de vous interesser au problème,
LittleWhite
Partager