Modèle:Lo vers rvb/algo1/Documentation
Cette page est chronoogiquement le premier essai réalisé pour Modèle:Lo vers rvb.
wikicode modifier
<!-- * Premier essai en essayer d’approximer l’œil: -->{{#if: {{{1|}}}| {{Hexadécimal_sans_span|{{#expr: 255/(1+({{{1|0}}}-{{{2|654}}})*({{{1|0}}}-{{{2|654}}})/1000) }}|no}} <!--rouge--> | {{#expr: {{{1|0}}}/{{{2|1}}} round {{{3|0}}} }} }}<!-- -->{{#if: {{{1|}}}| {{Hexadécimal_sans_span|{{#expr: 255/(1+({{{1|0}}}-{{{2|533}}})*({{{1|0}}}-{{{2|533}}})/1000) }}|no}} <!--vert--> | {{#expr: {{{1|0}}}/{{{2|1}}} round {{{3|0}}} }} }}<!-- -->{{#if: {{{1|}}}| {{Hexadécimal_sans_span|{{#expr: 255/(1+({{{1|0}}}-{{{2|437}}})*({{{1|0}}}-{{{2|437}}})/1000) }}|no}} <!--bleu--> | {{#expr: {{{1|0}}}/{{{2|1}}} round {{{3|0}}} }} }}<!-- -->
Sujet modifier
Les cônes de l’œil humain sont axés sur les trois longueurs d'ondes, ce qui a conduit a créer des écrans avec les trois couleurs RVB, pour l'oeil:
- 437 nm: bleu
- 533 nm: vert
- 564 nm: rouge
Il s'agit donc, pour chaque longueur d'onde, de procéder en trois étapes:
- De convertir la longueur d'onde en valeur RVB correspondant aux longueurs d'ondes de référence des écrans/de l'oeil
- De convertir en hexadécimal : (fait)
- De s'assurer que le code hexadécimal est utilisable dans un tableau (à faire)
Principe essayé dans ce modèle modifier
Trouver une luminosité correspondant en appliquant une courbe en cloche : à faire?
Calcul de l'écart modifier
implémenté Par soustraction mathématique. Valeurs de référence
- 437 nm: bleu
- 533 nm: vert
- 564 nm: rouge
Courbe en cloche modifier
Le but est d'appliquer une courbe en cloche, mais comment?
Peut-être qu'il faudrait approcher la Fonction de Voigt?
Le plus simple est sans doute d'implémenter une fonction lonrentzienne.
Les modèles suivants existent:
- Modèle:Interpolation: Risque de ne pas convenir pour le zéro.
- Modèle:Quel intervalle: On peut approcher une courbe en cloche avec deux sections constantes et une section linéaire de chaque côté de l'axe de la cloche.
Conversion en hexadécimal modifier
La conversion en hexadécimal s'appuie à partir du modèle Modèle:Hexadécimal_sans_span
Implémentation modifier
- Découper la longueur d'onde en tranches
- Pour chaque tranche, appliquer une approximation linéaire.
λ | Description | Rouge | Vert | Bleu |
---|---|---|---|---|
380 < λ < 380 | Ultra violets invisibles | 00 | 00 | 00 |
380 < λ < 420 | Mélange rouge/bleu en guise d'UV...! | 255*(440-λ )/(440-380)*γ*(0.3+0.7*(λ-380))/(420-380) | 00 | 255*(0.3+0.7*(λ-380))/(420-380)* γ |
420 < λ < 440 | Rouge décroissant | 255*(440-λ)/(440-380)*γ | 00 | 255*γ |
440 < λ < 490 | Vert croissant | 00 | 255*(λ-440)/(490-440)*γ | 255*γ |
490 < λ < 510 | Bleu décroissant | 00 | 255*γ | 255*(510-λ)/(510-490)*γ |
510 < λ < 580 | Rouge croissant | 255*(λ-510)/(580-510)*γ | 255*γ | 00 |
580 < λ < 645 | Vert décroissant | 255*γ | 255*(645-λ)/(645-580)*γ | 00 |
645 < λ < 700 | Rouge constant | 255*γ | 00 | 00 |
700 < λ < 780 | Rouge décroissant | 255*(0.3+0.7*(780-λ))/(780-700)*γ | 00 | 00 |
780 < λ | Infra rouges invisibles | 00 | 00 | 00 |
Exemple modifier
Description | Wikicode | Résultat |
---|---|---|
Longueur d'onde de 437nm | {{000#000000|437}} | Résultat : 010101#0C00FF |