FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
Colorimétrie : convertisseur RVB vers TSL Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Colorimétrie : convertisseur RVB vers TSL Emptypar Marc Hier à 11:42

» Bataille navale SM
Colorimétrie : convertisseur RVB vers TSL Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Une calculatrice en une ligne de programme
Colorimétrie : convertisseur RVB vers TSL Emptypar jean_debord Ven 26 Avr 2024 - 8:01

» Gestion d'un système client-serveur.
Colorimétrie : convertisseur RVB vers TSL Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Colorimétrie : convertisseur RVB vers TSL Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Colorimétrie : convertisseur RVB vers TSL Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Colorimétrie : convertisseur RVB vers TSL Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Colorimétrie : convertisseur RVB vers TSL Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Colorimétrie : convertisseur RVB vers TSL Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Colorimétrie : convertisseur RVB vers TSL Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Colorimétrie : convertisseur RVB vers TSL Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Colorimétrie : convertisseur RVB vers TSL Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Colorimétrie : convertisseur RVB vers TSL Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Colorimétrie : convertisseur RVB vers TSL Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

 

 Colorimétrie : convertisseur RVB vers TSL

Aller en bas 
3 participants
AuteurMessage
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL EmptyDim 8 Mai 2022 - 2:31

Bonjour à tous !

T.S.L. (H.S.L. en anglais) est un système de gestion des couleurs. Il permet de coder une couleur en fonction de sa Teinte, de sa Saturation et de sa Luminosité. Dans certaines publications, les deux derniers paramètres sont permutés ce qui donne T.L.S. (H.L.S. en anglais).

Ne pas confondre avec le système T.S.V. (H.S.V. ou H.S.B. en anglais) qui est une manière différente de représenter les couleurs. Je publierai un prochain article concernant cet autre système de codage.

La Teinte s’exprime en degrés, la Saturation et la Luminosité en pourcentage.

Sous forme de sous-programme, la sub proposée ci-dessous prend en paramètres les valeurs R.V.B. comprises dans un intervalle classique de [0,255].

Les valeurs T.S.L. calculées sont des variables globales ayant comme intervalle :
- Teinte en degrés : [0,359]
- Saturation en pourcent : [0,100]
- Luminosité en pourcent : [0,100]

Certains programmes utilisent un intervalle [0,240], voire [0,1], pour représenter les valeurs T.S.L. Une simple opération mathématique permettra de passer d’une notation à une autre.

Colorimétrie : convertisseur RVB vers TSL Rvb2ts10

Code:
' RVB vers TSL (RGB to HSL)
' Marc - Mai 2022
' Ecrit en langage Panoramic

dim rouge%,vert%,bleu%
dim teinte,saturation,luminosite

caption 0,"RVB vers TSL (RGB to HSL)"

' ******* SAISIR ICI LES VALEURS RVB à CONVERTIR *******
rouge% = 82
vert% = 152
bleu% = 87

rvb2tsl(rouge%,vert%,bleu%)
print " R,V,B = " + str$(rouge%) + "," + str$(vert%) + "," + str$(bleu%)
print
print " Teinte = " + str$(teinte) + "°"
print " Saturation = " + str$(saturation) + "%"
print " Luminosité = " + str$(luminosite) + "%"

end
' ------------------------------------------------------------------------------
sub rvb2tsl(r1,v1,b1)
    dim_local mini, maxi, ecart

    ' conversion rvb dans l'intervalle [0,1]
    r1 = r1 / 255
    v1 = v1 / 255
    b1 = b1 / 255

   ' recherche de la plus grande valeur parmi les composantes r,v,b
    maxi = max(r1,max(v1,b1))

    ' recherche de la plus petite valeur parmi les composantes r,v,b  
    mini = min(r1,min(v1,b1))

    ' calcul luminosité
    luminosite = (maxi + mini) / 2

    ' calcul de l'écart entre la valeur mini et maxi
    ecart = maxi - mini

    ' calcul de la teinte et de la saturation
    if ecart = 0
        teinte = 0
        saturation = 0
    else      
 ' calcul de la saturation
 if luminosite < 0.5 then saturation = ecart / (maxi + mini)
 if luminosite >= 0.5 then saturation = ecart / (2 - maxi - mini )

        ' calcul de la teinte
 if r1 = maxi then teinte = ( v1 - b1 ) / ecart
 if v1 = maxi then teinte = 2 + ((b1 - r1) / ecart)
 if b1 = maxi then teinte = 4 + ((r1 - v1) / ecart)
    end_if

    ' conversion de la teinte en degrés [0,360]
    teinte = int(teinte * 60)
    teinte = wrap_value(teinte)

    ' conversion saturation en pourcentage [0,100%]
    saturation = int(saturation * 100)

    ' conversion luminance en pourcentage [0,100%]
    luminosite = int(luminosite * 100)
end_sub

Prochains articles sur le thème de la colorimétrie :
- Convertisseur TLS => RVB
- Convertisseur RVB => TSV
- Convertisseur TSV => RVB

A bientôt !


Récapitulatif des articles concernant les convertisseurs colorimétriques:

RVB vers TSL : https://panoramic.1fr1.net/t6749-colorimetrie-convertisseur-rvb-vers-tsl
TSL vers RVB : https://panoramic.1fr1.net/t6755-colorimetrie-convertisseur-tsl-vers-rvb
RVB vers TSV : https://panoramic.1fr1.net/t6754-colorimetrie-convertisseur-rvb-vers-tsv
TSV vers RVB : https://panoramic.1fr1.net/t6756-colorimetrie-convertisseur-tsv-vers-rvb


Edit du 09/05/2022 : Optimisation du code-source suivant les conseils ci-dessous de Papydall.


Dernière édition par Marc le Mar 10 Mai 2022 - 11:39, édité 5 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Re: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL EmptyDim 8 Mai 2022 - 4:04

Après une absence de deux mois, me revoilà de retour!
Donc, salut / bonjour / bonsoir à tous.

@Marc
Merci pour le partage.

Pour le calcul du maxi et du mini, tu as codé comme ceci

Code:

' recherche de la plus grande valeur parmi les composantes r,v,b
    if r1 >= v1 and r1 >= b1 then maxi = r1
    if v1 >= r1 and v1 >= b1 then maxi = v1
    if b1 >= r1 and b1 >= v1 then maxi = b1

    ' recherche de la plus petite valeur parmi les composantes r,v,b
    if r1 <= v1 and r1 <= b1 then mini = r1
    if v1 <= r1 and v1 <= b1 then mini = v1
    if b1 <= r1 and b1 <= v1 then mini = b1


Moi, je coderais comme ceci :

Code:

    ' recherche de la plus grande valeur parmi les composantes r,v,b
    maxi = max(r1,max(v1,b1))

    ' recherche de la plus petite valeur parmi les composantes r,v,b  
    mini = min(r1,min(v1,b1))

Ce n'est qu'un detail, mais j'aime bien faire les choses autrement.
Cette manière de faire permet d'économiser plusieurs lignes de IF ... THEN surtout quand on est devant une serie de valeurs.

Code:

dim a,b,c,d,e,f
dim maxi,mini
a = 12 : b = 1 : c = 37 : d = -123 : e = 99 : f = 0
maxi = max(a,max(b,max(c,max(d,max(e,f)))))
mini = min(a,min(b,min(c,min(d,min(e,f)))))
print "maxi = " ; maxi
print "mini = " ; mini


Une autre façon de coder :

Code:


dim a,b,c,d,e,f,g,h,i,j,k,l,m
dim mini,maxi
' initialisation
a = 12  : b = 17  : c = -13 : d =123 : e = 95123 : f = -159875 : g = 123 : h = 0
i = 178 : j = -96 : k = 0   : l = sin(pi/17) : m = sqr(123)

' calcul du maxi
maxi = max(max(max(max(max(max(max(max(max(max(max(max(a,b),c),d),e),f),g),h),i),j),k),l),m)
' calcul du mini
mini = min(min(min(min(min(min(min(min(min(min(min(min(a,b),c),d),e),f),g),h),i),j),k),l),m)
print "maxi = " ; maxi
print "mini = " ; mini


Au plaisir de lire les "Prochains articles sur le thème de la colorimétrie "
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2380
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Re: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL EmptyDim 8 Mai 2022 - 7:57

Bonjour  Papydall !

Merci pour ton intervention Smile

Citation :
Pour le calcul du maxi et du mini...

Mince ! Je n'ai pas fait attention que les fonctions min() et max() existaient en Panoramic !  Embarassed
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Re: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL EmptyDim 8 Mai 2022 - 10:52

Les fonctions MAX(x,y) et MIN(x,y) retournent respectivement la plus grande et la plus petite valeur de x et y.
Pour avoir la plus grande (respectivement la plus petite) valeur de plus de deux paramètres, l'astuce consiste à appeller récursivement ces fonctions selon ces deux formes :

Code:

maxi = max(a,max(b,max(c,d)))


ou

Code:

maxi = max(max(max(a,b),c),d)


Notre ami bignono (où est-il ?) à demandé ici de l'aide à propos de cette question.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
mindstorm

mindstorm


Nombre de messages : 684
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Re: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL EmptyMer 11 Mai 2022 - 19:05

Merci messieurs pour ces moments de partage
je prends un maximum de plaisir
Revenir en haut Aller en bas
Contenu sponsorisé





Colorimétrie : convertisseur RVB vers TSL Empty
MessageSujet: Re: Colorimétrie : convertisseur RVB vers TSL   Colorimétrie : convertisseur RVB vers TSL Empty

Revenir en haut Aller en bas
 
Colorimétrie : convertisseur RVB vers TSL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Colorimétrie : convertisseur RVB vers TSV
» Colorimétrie : convertisseur TSL vers RVB
» Colorimétrie : convertisseur TSV vers RVB
» Convertisseur binaire vers décimal / Hexadécimal
» Convertisseur date vers jour Julien et inversement

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: