Programmation en Scala : un peu de graphique
par
popularité : 2%
Dessin d’une rosace
En supposant :
-
- que la méthode
line(x0,y0, x1,y1)
existe et qu’elle trace une ligne entre les poins (x0, y0) et (x1, y1) - que le point (0,0) se situe en haut à gauche de la fenêtre,
- que la méthode
il s’agit de tracer une rosace comme celle ci-dessous :
- rosace
- image de rosace réalisée en Scala
Nous allons utiliser la bibliothèque JavaFX.
Avec JavaFX, il faut créer les éléments graphiques pour les déposer sur un panneau (Pane)
Si root
est la racine du panneau qui a une taille de (cote x cote) pixels, pour tracer une diagonale de haut à gauche en bas à droite, on écrira :
Pour dessiner la rosace, il est possible de déposer des séries de 4 lignes :
- //dessine une rosace sur le panneau dont la racine est 'roor'
- // trace nbPoints lignes par côté*/
- {
- var marge = cote/nbPoints
- {
- root.getChildren.addAll(l1,l2, l3, l4);
- }
- }
afficher une fenêtre en Scala
On utilise ici une fenêtre JavaFX qu’il faudra appeler.
Supposons que TestRosace soit le nom de l’application javafx, pour l’appeler, on passera par un objet qui contient la méthode principale main
Dans le même fichier, on écrira :
- var marge = cote/nbPoints
- {
- root.getChildren.addAll(l1,l2, l3, l4);
- }
- }
- primaryStage.setTitle("Rosace");
- primaryStage.show()
- //ici on appelle la fonction qui dessine sur le 'root'
- dessineRosace(100, root)
- }
- }
On précise les importations de classes en tête de ce fichier :
Vous trouverez ci dessous le fichier complet à télécharger...
Petit exercice : poursuite de points
En reprenant le code précédant, on désire maintenant tracer des lignes entre des points qui se déplacent sur la fenêtre...
On définit la classe Point ainsi :
Des points sont placés dans un tableau. A chaque étape :
-
- une ligne est tracée entre chaque point et son suivant dans le tableau (pour le dernier point une ligne est tracée entre celui-ci et le premier point)
- un déplacement est effectué entre chaque point et son suivant dans le tableau (le dernier point se déplace vers le premier)
Pour se déplacer, un point avance de x% de la distance qui le sépare de son suivant dans le tableau.
La figure suivante est un exemple de résultat :
- rosace 2
- rosace obtenue à partir de 8 points se poursuivant
Ce résultat est obtenu à partir de 8 points répartis ainsi initialement :