IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Anciens défis Discussion :

Zoom sur les fractales [Défi n°1]


Sujet :

Anciens défis

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut Zoom sur les fractales
    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
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    il manquerai pas des -1?
    par exemple, les index pixels en j vont de 0 à (w-1) pour une largeur w.

    j'ai pas tous compris à ton code....

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Des -1 , mais où ? J'ai pas trop compris, et encore moins le pourquoi.

    J'explique mon code:

    [code]
    newParams.zX = ( ( start.x() / static_cast<double>(params.iWidth)) * params.zWidth) + params.zX;
    [CODE]

    Cette ligne, va d'abord savoir grâce à un nombre comprend entre 0 et 1 ou se trouve le point ou a cliquer l'utilisateur, pour faire son zoom.
    Donc,
    start.x() / la_taille_de_l'image -> donne un point entre 0 et 1 ( car start.x() est toujours sur l'image.
    Donc, une fois que l'on sait ou se trouve le début, on reporte la proportion sur la taille de l'ancienne zone de la fractale. ( * params.zX ) puis on ajoute l'ancien zX, afin de se déplacer.
    Pareil, pour les Y.

    Puis cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    newParams.zWidth =  (( end.x() - start.x() ) / static_cast<double>(params.iWidth)) * params.zWidth ;
    Cette ligne, permet de calculer la prochaine grandeur de la zone de la fractale.
    Ce que je fais ici, je calcul d'abord la taille du rectangle de l'utilisateur ( end.x() - start.x() ).
    Puis je fais encore la proportion de la zone, par rapport à l'image ( donc un nombre entre 0 et 1 ).
    Et je rapporte ceci sur la nouvelle zone à dessiner.


    Je crois que ça va être plus clair comme ça.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start.x() / la_taille_de_l'image
    -> donne un point entre 0 et 1 ( car start.x() est toujours sur l'image.
    faux tu n'auras pas 1

    Quels sont les valeurs possible de x?
    par quoi tu divise?

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 054
    Billets dans le blog
    141
    Par défaut
    Ok, je n'aurais jamais 1.
    Car les valeurs que j'ai de start.x() serons de 0 à la taille de l'image, mais sans jamais être la taille de l'image.
    Mais dois je pour autant, enlever 1, à la taille de l'image pour mon calcul ?

    Dans mes cas d'expérimentation, j'ai 0 <= x < 1000 avec bien sur la taille de l'image = 1000
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Mais dois je pour autant, enlever 1, à la taille de l'image pour mon calcul ?
    en principe oui.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Forcer un zoom sur les mobiles
    Par jibey dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/10/2013, 16h43
  2. Réponses: 1
    Dernier message: 19/12/2012, 11h18
  3. [CKEditor] Zoom sur les photos
    Par top16500 dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 29/02/2012, 15h31
  4. Scale ou Zoom sur les Controls d'une form?
    Par Odeonn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/01/2010, 15h29
  5. Zoom sur les Images
    Par lionel84 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 19/09/2008, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo