Document et code utile au démarrage

du modèle à l'écran

On considère un ensemble de points dans leurs coordonnées d'origine traditionnellement dans un repère orthonormé direct (antihoraire, trigonométrique) (O,i,j). On considère que les coordonnées des points de l'ensemble sont comprises en x dans [minX,maxX] et en y par [minY, maxY]. On souhaite afficher ces points à l'écran dans une fenêtre ou dans une zone d'une fenêtre, appelée viewport, ayant son propre système de coordonnées et son propre repère. Le viewport constitue une zone d'affichage traditionnellement défini par les coordonnées du coin supérieur gauche (x0,y0), les dimensions de la zone (w,h), et un repère horaire.

On note (xm,ym) les coordonnées d'un point quelconque dans le modèle d'origine et (xv,yv) les coordonnées de ce même point dans le viewport.

  1. Quelle transformation permet de calculer (xv,yv) en fonction (xm,ym)?
  2. Implémenter cette transformation dans une classe SpaceToViewport paramétrée par les caractéristiques du modèle des points d'origine (minX, maxX, minY, maxY) et du viewport (x0,y0), w, h.
  3. On envisage de représenter l'ensemble des points d'origine dans une seule zone de dessin et de mettre en oeuvre quelques interactions. Envisager les structures de données et mécanismes logiciels permettant de conserver pour chaque point, ses coordonnées dans le modèle et ses coordonnées à l'écran et de limiter le recalcul des coordonnées écran aux cas où le modèle change.
  4. Avec votre implémentation (1) afficher un ensemble de points donnés dans les coordonnées du modèle et (2) modifier interactivement les points en les sélectionnant et les déplaçant à l'écran à la souris.
  5. Tester votre implémentation en utilisant ces jeux de données : spaceToViewport.zip

  6. Mettre en oeuvre les interactions permettant les opérations d'édition suivantes: (1) ajout d'un point, (2) suppression d'un point existant et (3) déplacement d'un point.

Ecriture matricielle d'application linéaires en coordonnées homogènes

Ecrire les matrices représentant les transformations suivantes en coordonnées homogènes:

Composition d'applications

  1. Quelles sont les transformations qui permettent de passer d’une figure à l’autre dans cette séquence de figures?
  2. Ecrire un programme qui construit ces figures:
  3. Afficher les figures successivement et interactivement.

Transformation bifocale

Transformation fisheye

  1. Afficher une grille de 20x20 éléments comme dans la figure ci-dessous.
  2. Appliquer une transformations fisheye sur les éléments de la grille calculée en coordonnées cartésiennes, en prenant comme centre de la transformation les coordonnées du pointeur souris.
  3. Programmer les callbacks utiles pour que l’on puisse modifier interactivement les valeurs respectives de d, paramètre de la déformation fisheye vue en cours.

Jeu de trioker

  1. Afficher l’ensemble des 24 pièces du trioker dans une partie de la fenêtre.
  2. Interactions – il s’agit de rendre interactives les opérations suivantes
  3. Afficher alternativement chacun de ces puzzles. NB : les exemples ne contiennent que les sommets du contour du puzzle.
  4. En utilisant les interactions définies en 2, rendre possible la construction de l’un de ces puzzles.
  5. Questions subsidiaires :