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

C Discussion :

Remise à l'échelle d'un intervalle


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 9
    Par défaut Remise à l'échelle d'un intervalle
    Bonjour j'ai un problème, je veux afficher un zoom une image : en gros pour afficher mon image,

    - j'affiche seulement des points générés compris entre l'intervalle [-2,2] * [-1.25,1,25], donc pour afficher plus gros je dois réduire l'écart par exemple :

    [-1.75,1.75]*[-1,1]. Et la de cette manière ce sera zoomé par rapport au centre de l'image par rapport au point (longueurfenetre/2,hauteurfenetre/2).

    - Moi je veux zoomé par rapport à un autre point (abs,ord), il faut que je transvecte mes intervalles, mais vu que ce sont des intervalles j'ai du mal à remettre à l'échelle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    /**
     * \brief Exposition du zoom
     * \details  Enregistre une nouvelle mise à l'échelle.
     * 
     * INPUT: ordonnée et abscisse du centre de la zone à changer d'échelle
     * OUTPUT: --
     * 
     * 
     *
     */ 
    void win1_on_expose_zoom_mandelbrot(int abs, int ord,Ez_event *ev)
    {
    		double h = 0.1;
    		t_App_data *app = ez_get_data(ev->win);
     
    		app->xmin = app->xmin+h;/**    mise à l'échelle xmin                       */
    		app->xmax = app->xmax-h;/**    mise à l'échelle xmax                        */
    		app->ymin = app->ymin+h;/**    mise à l'échelle ymin                        */
    		app->ymax = app->ymax-h;/**    mise à l'échelle ymax                        */
     
     
    }
    Je vous mets le code que j'ai fait pour l'instant je n'arrive que à zoomer autour du centre. Et il y a quelques spécificités par rapport à l'outil graphique que j'utilise.

    Je vous remercie

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Afin d'éviter les erreurs de changement de repère, la manière traditionnelle est de repasser en coordonnées normalisées ([0, 1]) avant de transformer vers le nouveau repère. On effectue d'abord la translation puis la mise à l'échelle : v_normalized = (v_old - origin_old) / extend_old ; puis on fait l'inverse pour se placer dans le repère suivant : v_new = (v_normalized * extend_new) + origin_new (pour des vecteurs de dimension supérieure à 1, l'opérateur * représentant ici le produit par composantes, ou produit d'Hadamard : u * v = (u.x * v.x, u.y * v.y)).

    Transformer un rectangle revient ensuite à transformer les points qui le définissent.

Discussions similaires

  1. remise à jour des rollback segment par oracle
    Par juin29 dans le forum Administration
    Réponses: 9
    Dernier message: 23/04/2004, 14h51
  2. Remise à zero champ auto-incrementé (SQL Server)
    Par James85 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/01/2004, 09h23
  3. Remise à 0 d'un compteur automatique
    Par missllyss dans le forum SQL
    Réponses: 4
    Dernier message: 15/12/2003, 16h46
  4. Réponses: 7
    Dernier message: 02/06/2003, 08h38
  5. [Impression] Probleme d'échelle/résolution
    Par Dajon dans le forum C++Builder
    Réponses: 3
    Dernier message: 12/05/2003, 14h56

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