Le système RVB est un modèle colorimétrique utilisé pour l’affichage sur les écrans numériques. Il définit chaque couleur à travers 3 composantes (Rouge, Vert, Bleu), chacune codée par un entier allant de 0 à 255. (Exemple : RVB(255,165,0) donne une nuance orange).
Afin de créer un effet visuel innovant pour un jeu vidéo, un désigner utilise une formule mathématique sur un échantillon de M codes RVB pour déterminer un code RVB représentant une nouvelle nuance.

𝑎𝑣𝑒𝑐 𝐗𝟏,𝐗𝟐…𝐗𝐌∶𝑉aleurs d′une composante de couleur,
𝐌∶Nombre de code 𝐑𝐕𝐁 de l′échantillon
et 𝑬𝒏𝒕∶Partie entière d′un réel
Exemple :
Pour le tableau T suivant contenant les valeurs des composantes de 4 codes RVB :

Les composantes du nouveau code RVB sont calculées comme suit :

Dans ce contexte, on envisage de développer une application, enrichie par une interface graphique, qui simule la détermination d’une nouvelle nuance RVB selon le principe suivant :
- remplir un tableau T par N entiers qui varient entre 0 et 255, représentant les valeurs des composantes de N Div 3 codes RVB avec N est multiple de 3 et 6 ≤ N ≤ 99,
- appliquer la formule mathématique décrite précédemment pour calculer les valeurs des composantes de la nouvelle nuance RVB,
- afficher le code RVB de la nuance obtenue.
Travail demandé
1. Créer l’interface graphique illustrée dans la figure Fig-1 et l’enregistrer sous le nom InterfaceNuance.

2. Créer un programme en python et l’enregistrer sous le nom Nuance, dans lequel on demande :
a. d’implémenter l’algorithme suivant de la procédure Remplir (T, N) qui permet de charger un tableau T par N entiers.

b. D’écrire une fonction CodeRVB (T, N) qui calcule les composantes du nouveau code RVB à l’aide de la formule mathématique décrite précédemment, et retourne le résultat sous forme d’une chaîne de caractères au format :
RVB(ComposanteRouge, ComposanteVert, ComposanteBleu)
c. D’écrire un module Play, qui s’exécute suite au clic sur le bouton "Déterminer", permettant :
- de récupérer la valeur de l’entier N saisi, de s’assurer de sa validité et d’afficher, le cas échéant, le message adéquat via le label dédié à l’affichage, comme illustré dans les figures Fig-2, Fig-3 et Fig-4,
- d’exploiter les modules Remplir et CodeRVB afin d’afficher le résultat via le label dédié à l’affichage, comme illustré dans la figure Fig-5,
d. D’exploiter l’annexe présentée ci-après tout en apportant les modifications nécessaires à l’intégration de l’interface graphique InterfaceNuance.

Pour créer une application en Python et Designer QT afin de concevoir une application, enrichie par une interface graphique, qui détermine un code RVB représentant une nouvelle nuance., on va suivre ces étapes:
a- Ouvrez Qt Designer et créez un nouveau fichier de type Main Window.
b- Ajoutez ces widgets:
QLabel nommé 'affichage' pour afficher les messages générés par le programme
QLineEdit nommé 'n' pour entrer l'entier n.
QPushButton nommé 'determiner_bt' pour exécuter le module Play()

Enregistrez le fichier avec l'extension .ui, par exemple InterfaceNuance.ui.
Voici un exemple de script Python qui utilise l'interface graphique générée par Qt Designer.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# ========================================================= # IMPORTATION DES BIBLIOTHÈQUES # ========================================================= from PyQt5.uic import loadUi # Pour charger l'interface graphique créée avec Qt Designer from PyQt5.QtWidgets import QApplication # Pour gérer l'application PyQt5 from numpy import * # Pour utiliser les tableaux numériques (array) import random # Pour générer des nombres aléatoires # ========================================================= # CRÉATION DU TABLEAU POUR STOCKER LA SUITE # ========================================================= # Tableau de 99 éléments destiné à stocker les termes générés t = array([int] * 99) # Création de l'application PyQt5 app = QApplication([]) # Chargement de l'interface graphique depuis le fichier .ui windows = loadUi("InterfaceNuance.ui") # ========================================================= # PROCEDURE : REMPLISSAGE DU TABLEAU # ========================================================= def remplir(t, n): # Génération aléatoire du premier terme entre 0 et 255 t[0] = random.randint(0,255) # Génération des autres termes de la suite for i in range(1,n): # Calcul du terme suivant selon la formule donnée # Le modulo 256 permet de garder les valeurs entre 0 et 255 t[i] = i * (t[i-1] + n) % 256 # ========================================================= # PROCEDURE : CALCUL DU CODE RVB # ========================================================= def codeRVB(t, n): # Initialisation des composantes Rouge, Verte et Bleue composantrouge = 0 composantvert = 0 composantbleu = 0 # Parcours du tableau avec un pas de 3 for i in range(0, n, 3): # Affichage de l'indice dans la console print(i) # Accumulation des carrés des valeurs pour la composante rouge composantrouge = composantrouge + (t[i] * t[i]) # Accumulation des carrés des valeurs pour la composante verte composantvert = composantvert + (t[i+1] * t[i+1]) # Accumulation des carrés des valeurs pour la composante bleue composantbleu = composantbleu + (t[i+2] * t[i+2]) # Calcul final de la composante rouge # sqrt() : racine carrée # %256 : garantit une valeur comprise entre 0 et 255 composantrouge = int(sqrt((composantrouge)/4) % 256) # Calcul final de la composante verte composantvert = int(sqrt((composantvert)/4) % 256) # Calcul final de la composante bleue composantbleu = int(sqrt((composantbleu)/4) % 256) # Affichage du résultat dans l'interface graphique windows.affichage.setText( 'Nouvelle Nuance : RVB(' + str(composantrouge) + ',' + str(composantvert) + ',' + str(composantbleu) + ')' ) # ========================================================= # FONCTION PRINCIPALE EXÉCUTÉE LORS DU CLIC SUR LE BOUTON # ========================================================= def play(): # Effacer l'ancien texte affiché windows.affichage.clear() # Vérifier si l'utilisateur a saisi une valeur if windows.n.text() != '': # Conversion de la valeur saisie en entier n = int(windows.n.text()) # Vérification des conditions : # - n doit être compris entre 6 et 99 # - n doit être multiple de 3 if (6 <= n <= 99) and (n % 3 == 0): # Remplissage du tableau avec les termes générés remplir(t, n) # Calcul et affichage du code RVB codeRVB(t, n) else: # Message d'erreur si les conditions ne sont pas respectées windows.affichage.setText( "n doit être : 6<=n<=99 et multiple de 3" ) else: # Message d'erreur si aucun nombre n'est saisi windows.affichage.setText("Veuillez saisir un nombre !") # ========================================================= # CRÉATION ET EXÉCUTION DE L'APPLICATION PYQT5 # ========================================================= # Affichage de la fenêtre principale windows.show() # Connexion du bouton "determiner_bt" à la fonction play() # Lorsque le bouton est cliqué, la fonction play() est exécutée windows.determiner_bt.clicked.connect(play) # Démarrage de la boucle principale de l'application app.exec_() |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info