# Gnral Dveloppement > Algorithme & Mathmatiques > Traitement d'images >  Passer d'un rendu RGB par calculs  un rendu RYB par une table

## Jipt

Bonjour,

je ne sais pas si le titre est bien clair, alors voici d'abord une petite image RGB, avec  droite un dgrad classique gnr par calcul, et  gauche en utilisant une conversion HSL_to_RGB pour avoir le cercle (c'est pratique, un cercle a 360 et le "H" de HSL travaille aussi sur 360) :
Note : les images sont rduites de moiti.


C'est trs moche mais c'est trs fonctionnel.
La chose se complique srieusement si on cherche un rendu RYB, beaucoup plus esthtique  l'utilisation, mais qui va tre trs laid lui aussi en utilisant du calcul pur et dur :


Il sera considrablement amlior par l'utilisation d'une table permettant de gnrer 24 couleurs de base dgrades de bas en haut de noir  blanc en passant par "couleur" sur 256 pas :


Ce beau rectangle a donc t gnr depuis un bte bitmap de 24x256, qui a ensuite t "stretchdrawed" vers un composant d'affichage (un TImage, je suis sous Lazarus / FreePascal) avec une bonne dose de flou pour uniformiser tout a et hop !

La question c'est : comment faire pour avoir un cercle RYB avec la mme douceur que le rectangle ?
J'avoue que je donne ma langue au chat, je ne sais pas convertir en utilisant ma map linaire vers un cercle...  ::cry:: 

Une ide ?
Merci,

ANNEXE : la map des 24 couleurs


```

```

Et ces couleurs ne sont pas tombes du ciel, je suis parti de color wheels trouves sur le web, collectionnes au fur et  mesure, en 12 couleurs en gnral (parfois 16 mais a ne va pas pour le jaune, qui ne tombe plus en place  120), analyses au color picker pour en faire une moyenne que j'ai ensuite bricole pour avoir les 12 autres valeurs intermdiaires, en terminant par un ajustement " l'il".

----------


## Nebulix

Peux-tu mieux dfinir les concepts de laideur et de douceur ? C'est peut-tre ce qui te bloque.

----------


## Jipt

> Peux-tu mieux dfinir les concepts de laideur et de douceur ? C'est peut-tre ce qui te bloque.


L'image RGB prsente des artefacts visuels au milieu horizontal, comme un trait plus lumineux, et les couleurs sont trop marques, on dirait une suite de VVV.

Et pour le cercle RYB, on voit bien ce trait cyan pouvantablement agressif, perdu tout seul au milieu des autres couleurs, plus tales.

Mais ce n'est pas a qui me bloque. C'est plutt comment transformer ce rectangle o le noir est en bas en un cercle o le noir serait la circonfrence, et le centre blanc.
"Lancer de rayons" ? Je connais les mots mais ne sait pas ce que a veut dire concrtement, mme si a me fait penser  ma question. EDIT : mais a n'a rien  voir, j'ai jet un il.

----------


## anapurna

salut 

si tu veux passer du RGB a RYB il existe des fonction de conversion 
du genre 



```

```

une autre mthode est aussi possible 



```

```

daprs ce lien la

----------


## Jipt

Yop !



> salut 
> 
> si tu veux passer du RGB  RYB il existe des fonctions de conversion


Merci, je les connais depuis un bon bout de temps, et elles ne peuvent pas s'appliquer  mon problme (et en plus leur rendu est moche, comme expliqu dans mon premier post).

Ce qu me fait penser que j'ai d mal m'exprimer, mal dcrire mon problme : je veux "simplement" (pas sr que a soit simple) dessiner dans le cercle avec les couleurs du rectangle -- et  la limite, qu'il s'agisse d'un rendu RYB, on s'en contre-fiche.

En fait, il "suffirait" de partir des points blancs en haut du rectangle et de tous les regrouper au centre du cercle pour de l, dessiner 360 arcs-de-cercle remplis chacun d'une couleur reprsente par une "colonne" du rectangle.

Un peu comme a, quoi, en prenant en compte le fait qu'il s'agit de *dgrads* de blanc->couleur[n]->noir :

----------


## Nebulix

Pour chaque pixel de ton cercle, tu calcule un rayon R (distance au centre) et une phase P (angle du rayon = arc tangente(y/x). Dans ce pixel tu mets la couleur aux coordonnes P,R de ton rectangle.

----------


## anapurna

salut 

tu as un tres bon exemple ici

----------


## Jipt

Yop !



> tu as un trs bon exemple ici


Ah, efg !  ::ccool:: 
Oui, 25 ans que je connais, et c'est d'ailleurs grce  lui (et  son exemple que j'ai tordu dans tous les sens) qu'on peut admirer le rendu RGB dans le premier post. 
Excellentes sources, excellentes tudes, mais une *misre sans nom  convertir* en projet *Lazarus pour Linux* (exemple avec Chromaticity, je n'y suis pas arriv...  ::cry:: )
Bon, de toute faon, a ne pouvait pas s'appliquer, lui se base sur des calculs pour obtenir ses couleurs, quand moi, j'ai une matrice de couleurs "matres"  explorer.

Vais plutt creuser cette direction :



> Pour chaque pixel de ton cercle, tu calcules un rayon R (distance au centre) et une phase P (angle du rayon = arc tangente(y/x). Dans ce pixel tu mets la couleur aux coordonnes P,R de ton rectangle.


mais pas cet aprs-midi, pas dispo.

----------


## wiwaxia

Bonjour,  ::D: 

Je crois que tu rencontres plusieurs sortes de difficults, dans la ralisation de ton projet.

1) Les diagrammes de chromaticit sont certes trs beaux, mais la manipulation des fonctions couleur risque de te conduire devant des obstacles trs difficiles, sinon insurmontables.
Ces fonctions sont destines  la restitution des couleurs des radiations monochromatiques de longueur d'onde (λ) donne, approximativement comprise entre 400  et 800 nm, et le spectre obtenu est relativement plus tal du ct du rouge - d'o le dcalage vers la droite des couleurs centrales (jaune et vert) que tu as not. 
Une palette de couleurs doit-elle s'astreindre  un modle aussi complexe ? D'autant que des difficults supplmentaires ne manquent pas de surgir lorsque l'on veut passer au cercle des couleurs ...

2) Le passage du diagramme rectangulaire au cercle chromatique est li  un changement de systme de coordonnes, comme cela t'a t expliqu:


L'angle polaire correspond  la teinte exprime en degrs, et pour les calculs la conversion en radians ne pose pas de difficults:
trad = (2*Pi/360)*(x - 1)/(La - 1)(La) reprsentant la largeur de l'image, et (x) l'abscisse du pixel considr, variant de (0)  (La - 1).

Les relations en cause sont bien prsentes dans *cet article*:

----------


## Jipt

> Bonjour,


Ah, quand mme !
Tu en as mis du temps,  ::P: 
Content de te voir par ici,  ::ccool:: 

Bonsoir,



> 1) Les diagrammes de chromaticit sont certes *trs beaux*,


et c'est bien le but recherch.

J'ai beaucoup lu (et test) depuis nos conversations d'il y a qq annes, il en ressort que le modle RGB est trs bien pour piloter du hardware (les 3 canons d'un tlviseur cathodique, par ex.), mais esthtiquement ce n'est pas a, et le modle RYB serait beaucoup plus adapt.

C'est ce qui m'a orient dans cette direction, et c'est juste pour finir le projet que je voudrais un cercle construit avec les teintes du rectangle RYB, ce qui sera sans doute un peu compliqu, mais j'ai bon espoir (malgr mes faibles notions de math).

Et comme a je pourrai continuer  discuter avec mes relations de "barbouilleurs"  coups de pinceaux et autres gouaches sans passer pour un irrductible technocrate,  ::mouarf:: 

Un peu de lecture ?
avec un beau dessin 
le wiki 
Kandisky, ben oui
et encore wiki, surtout le point 1.3 




> 2) Le passage du diagramme rectangulaire au cercle chromatique est li  un changement de systme de coordonnes, comme cela t'a t expliqu:
> 
> Pice jointe 465849


Image non valide, me dit le fofo.




> Les relations en cause sont bien prsentes dans *cet article*


Oui, mais l aussi a cause de RGB,  ::aie:: 

Oubliez le mot "conversion", il faut penser "dessin du rectangle dans un cercle". Je vais creuser l'ide de Nebulix.

----------


## wiwaxia

Bonjour,  ::D: 

Je crois que tu rencontres plusieurs sortes de difficults, dans la ralisation de ton projet.

1) Les diagrammes de chromaticit sont certes trs beaux, mais la manipulation des fonctions couleur risque de te conduire devant des obstacles trs difficiles, sinon insurmontables.
Ces fonctions sont destines  la restitution des couleurs des radiations monochromatiques de longueur d'onde (λ) donne, approximativement comprise entre 400  et 800 nm, et le spectre obtenu est relativement plus tal du ct du rouge - d'o le dcalage vers la droite des couleurs centrales (jaune et vert) que tu as not. 
Une palette de couleurs doit-elle s'astreindre  un modle aussi complexe ? D'autant que des difficults supplmentaires ne manquent pas de surgir lorsque l'on veut passer au cercle des couleurs ...

2) Le passage du diagramme rectangulaire au cercle chromatique est li  un changement de systme de coordonnes, comme cela t'a t expliqu:


L'angle polaire correspond  la teinte exprime en degrs, et pour les calculs la conversion en radians ne pose pas de difficults:
trad = (2*Pi/360)*(x - 1)/(La - 1)(La) reprsentant la largeur de l'image, et (x) l'abscisse du pixel considr, variant de (0)  (La - 1).

Les relations en cause sont bien prsentes dans *cet article*:

C'est en y regardant de prs que l'on s'aperoit que les choses sont moins simples en ce qui concerne l'expression du rayon (r); chaque diagramme comporte en fait deux parties,  la frontire desquelles la saturation (S) prend sa valeur maximale (Smax = 1):


Sur la partie la plus claire dont la teinte va des couleurs pures au blanc, la lumire (_Value_) est constante et maximale (V = 255) - c'est l'inconvnient des notions trop rudimentaires du systme (HSV); cela correspond  la partie suprieure du domaine rectangulaire (2*y >= Ha), et pour le diagramme circulaire le rayon correspondant varie de zro  un seuil (R1) ici approximatif: on pourrait envisager la relation:
r = R1*S = R1*(2*y - Ha + 1)/(Ha - 1)
Sur la partie la plus sombre (2*y < Ha et r > R1), la lumire varie (0 <= V <= 255) et l'on a probablement:
r = R2 - (R2 - R1)*V = R1 + (R2 - R1)*y/(Ha - 1) .
L'cart (R2 - R1) est relativement faible, parce que les couleurs sombres sont laides (_moches_ est un terme tout  fait appropri), et qu'il faut viter les images dprimantes.

Je dois m'arrter, j'ai eu des ennuis de connexion, et je vois que tu as dj rpondu ... Je poursuivrai plus tard.

PS: Un peu laborieux, ce message, je le reconnais.
Les expressions de (r), crites  la vole, sont  vrifier.

----------


## Jipt

Bonsoir,

j'ai d mal capter quelque chose :



On n'est pas trs loin (le vert c'est presque a : il dmarre un peu trop bas mais il finit bien -- EDIT : si l'on fait abstraction du fait qu'il n'est pas  la bonne place : il devrait tre  9 h et l o il se trouve devrait tre l'orange, en fait on tourne  l'envers), un matheux verra tout de suite o a coince, moi je vais avoir du mal...
Et c'est long : presque 15 secondes pour construire cette image (mais c'est peut-tre li  l'appel connu pour tre loooong de bmp.Canvas.Pixels, voir le code)...



> une phase P (angle du rayon = arc tangente(y/x).


j'ai traduit "arc tangente(y/x)" par arctan2(y, x); sous Lazarus, c'est correct ?

Sinon, pour tester, il faut un TImage de 360x360 et un TButton avec 


```

```

Le fichier de map : mapdegrRYB360.zip

----------


## wiwaxia

:+1:  Intressante, la documentation sur l'chelle RJB. 

Voici  toutes fins utiles un code de la fonction donnant l'argument d'un point quelconque (x, y), variant arbitrairement entre 0 et 360 et donnant directement la variable _Teinte_ (_Hue_):


```

```

Comme on n'est jamais trop prudent, je l'ai test numriquement sur [0 ; 2*Pi[:


# Remarque mesquine,  comme d'habitude: si le vert est au milieu, c'est que tu est parti de l'chelle (RVB) - et non pas (RJB)  ::mrgreen::

----------


## Jipt

Bonjour,




> Intressante, la documentation sur l'chelle RJB.


H oui...  ::D: 




> Voici  toutes fins utiles


c'est trs gentil mais je ne vois pas du tout  quoi a va pouvoir me servir...
Je te rappelle que mes connaissances en maths sont plus que sommaires car je n'ai pas cette bosse qui permet de conceptualiser ces choses abstraites.
En gros, a ne me "parle pas", et il faudrait me l'expliquer comme  un gamin de 5 ans.

En attendant, j'ai repris attentivement la manire de Nebulix, et j'arrive  a :



J'ai d me gourrer quelque part, mais o ? En tout cas c'est beau c'est propre, donc on n'est pas trs loin.



```

```


Et cet aprme je ne suis pas dispo, dsol.




> # Remarque mesquine,  comme d'habitude: si le vert est au milieu, c'est que tu es parti de l'chelle (RVB) - et non pas (RJB)


a, c'est juste pas possible puisque je balaye le bitmap RYB, celui que j'ai mis dans le zip en pj ! C'est tout simplement que je ne dois pas tre au bon endroit dans ce bitmap,  ::P: 

EDIT :
Une intuition m'est venue en lisant l'aide de ArcTan, et je me suis souvenu avoir vu et utilis dans mes vieux codes une fonction


```

```


alors hop ! :


```

```


et a donne a :



On s'approche, on s'approche...

----------


## wiwaxia

Pas mal, le ballon de plage  ::aie:: . Si tu voulais bien prendre la peine de t'attarder sur le fait que la fonction Arctan(y/x) ne peut tre employe sans rserve, tu comprendrais que ce qui est propos en est l'adaptation. 
Et tu peux l'intgrer directement dans ton code source: il a t crit pour a.

Voici un codage des intensits relatives des composantes fondamentales (r, v, b) permettant d'obtenir une palette (RJB); cela doit correspondre  vue d'oeil  ce qui a t donn par *anapurna*.



```

```

Code  vrifier, bien sr  ::D:  .

PS: ArcTan2(Y, X) donne effectivement le mme rsultat.

----------


## Jipt

> -- snip --



C'est assez psychdlique, faudra ralentir l'acide, quand mme,  ::ptdr:: 
ou me montrer comment tu les utilises (les fonctions, pas les buvards,  ::mouarf:: )

Moi j'ai fait comme a :


```

```


et dans la proc qui appelle (extrait -- c'est rigolo, je retrouve des choses de Nebulix, et a doit venir de chez efg...) :


```

```

----------


## Nebulix

Il faudrait que tu regardes de prs la fonction arc tangente que tu utilises. D'abord vrifier si elle te renvoie un angle en degrs ou en radians. Ensuite comment elle gre les diffrents quadrants.

----------


## Jipt

> Il faudrait que tu regardes de prs la fonction arc tangente que tu utilises. D'abord vrifier si elle te renvoie un angle en degrs ou en radians.


C'est crit dans l'aide : 



> The resulting angle is in radial units.


Comme dit prcdemment, c'est ce qui m'a fait tilter et rechercher cette fonction de conversion ToDegrees.




> Ensuite comment elle gre les diffrents quadrants.


Mais il n'y a rien de plus dans l'aide ! Je suis sous Lazarus, l'aide c'est le parent pauvre, la misre noire,  ::cry:: 
Juste a, au dbut de la rubrique :



> Calculate inverse tangent


a te parle ? Moi pas, comme je l'ai souvent dit.  ce niveau je suis nul et je fais confiance  celui qui me dit quoi utiliser et comment.

Alors, oui, je pourrais aller voir le code source mais je ne sais pas o c'est exactement cach, je tombe sur un truc sotrique dans un fichier et je n'avance pas plus profondment :


```

```

Et en excutant le prog en pas--pas, on *ne rentre pas* dans cette fonction.
 partir de l je suis comme une poule qui aurait trouv un couteau,  :8O: 

- - -



> PS: ArcTan2(Y, X) donne effectivement le mme rsultat.


 ::koi:: 



```

```



On est de + en + prs : en fait ce qu'on voit devrait tre en haut par effet miroir au lieu de en bas, et il manque donc le bas (bleu, mauve, etc.) et l'tape _couleur vers noir_.




> Pas mal, le ballon de plage . Si tu voulais bien prendre la peine de t'attarder sur le fait que la fonction Arctan(y/x) ne peut tre employe sans rserve, tu comprendrais que ce qui est propos en est l'adaptation.


_ne peut tre employe sans rserve_
Qu'est-ce que tu entends par l (explication comme pour un minot de 5 ans qui aurait travers l'Afrique  pied et la Meditterane  la nage) ?

----------


## wiwaxia

> ... PS: ArcTan2(Y, X) donne effectivement le mme rsultat.


Je le croyais btement, et les commentaires de Virtual Pascal ne sont pas plus explicites que les tiens.

Je viens de modifier le petit programme prcdent, qui rvle que la fonction _Arctan2(y, x)_ balaie sur un tour le 
*domaine semi-ouvert [-Pi ; +Pi[*ce qui n'est pas pratique, dans le cas prsent.


Mais cela n'explique qu'en partie les rsultats obtenus.

La fonction _Arctan(x, y)_ balaie le semi-ouvert [0 ; 360[ ; peux-tu l'essayer ?

PS: J'ai l'impression que tu y es presque arriv.
Tu pourrais plus simplement insrer la rustine:


```
IF (Angle<0) THEN Angle:= Angle + (2*Pi)
```

----------


## Jipt

> La fonction _Arctan(x, y)_ balaie le semi-ouvert [0 ; 360[ ; peux-tu l'essayer ?


Ou je n'ai pas compris la question, ou a donne a :


On notera que le quart infrieur droit est correct (sauf l'absence du noir...)




> PS: J'ai l'impression que tu y es presque arriv.
> Tu pourrais plus simplement insrer la rustine:
> 
> 
> ```
> IF (Angle<0) THEN Angle:= Angle + (2*Pi)
> ```


Les grands esprits se rencontrent, je suis parti sur a :  if phase > 360 then phase := phase - 360; mais je n'ai pas not de diffrence flagrante,  croire qu'on ne dpasse pas les bornes.

Par contre, j'ai modifi un autre point :


```

```

et la moiti du boulot infrieur est faite !



La moiti car on va de blanc  couleur et il manque couleur  noir.

Quant  la partie suprieure, si on ne trouve pas avec les mathmatiques, je sens que je vais prendre dans un bitmap temporaire le demi-cercle rouge-jauve-vert, lui appliquer un effet miroir et le coller au-dessus de celui-ci et a ira bien.


image rduite de moiti
Ah bah nan, y a un ch'tit dfaut au raccord  droite rouge du haut avec rouge du bas mais a devrait pouvoir se rattraper en changeant les valeurs dans la map, a,  :8-): 

Bon, va falloir que je me dconnecte...
 ::coucou:: 

EDIT : une illumination, vit' vit' avant de partir :


```

```



Voil, a vous fait de la matire pour gamberger c't'aprme,  ::mouarf::

----------


## Jipt

Et donc voil le rendu avec autant de points que ncessaire grce  une matrice 1536x256 :



Et je me suis mme permis le luxe d'claircir le bleu de la courbe sinusodale, comme a :


```

```

Bientt le RYB  ::coucou::

----------


## wiwaxia

> ... Tu postes a (que je ne comprends pas trop) :
> _W: Non. Les dimensions de la matrice et de l'image sont indpendantes de la subdivision opre pour le calcul; pour chaque couleur, tu as 3 fois plus de points  porter que de barres verticales dans la palette._


Je te proposais une variante du code qui, au lieu de 


```
FOR x:= 0 TO (Largeur - 1) DO ...
```

comporterait les instructions:



```

```

Pour chaque valeur du compteur (j) seraient excutes les actions suivantes:


```

```




> ... tous les essais RGB que j'ai faits depuis que j'ai le nez l-dessus (2016-17) se sont toujours bass sur du 768 de large (car 1536, faut des grands crans, en dv a va, dans la vraie vie c'est tendu).
> 
>  l'heure actuelle il y a 360 barres verticales, et il me semble que c'est pour simplifier la vie lors du passage au cercle ...


Pourquoi cette fixation sur une largeur donne ? 
Pourquoi 360 et non pas 400, alors que depuis la Rvolution l'angle droit est divis en 100 *grades*, et que l'on trouve dans la librairie Pascal les fonctions_ GradToRad(.)_ et _RadToGrad(.)_ ?
Pourquoi s'encombrer d'une matrice  1536 colonnes, alors que se limiter  600 serait un compromis simple et raisonnable ? Les rgles de trois ne sont-elles pas l pour raliser les ajustements ncessaires ?




> ... car mine de rien, souviens-toi, j'tais parti d'une map de 24 couleurs, soit 24 barres verticales et ma foi, a fonctionnait ...


De deux choses l'une: ou l'on regarde les fonctions couleur et discute de leurs ventuelles variantes - et tu ranges alors ta liste de 24 couleurs au placard,
ou bien tu t'en tiens  cette liste (option parfaitement lgitime) et la prsente discussion n'a plus d'objet.

Simplement l'une des deux options est en trop: les palettes dcoulent
- soit de la donne de 3 fonctions couleur { R(x), V(x), B(x) },
- soit d'une liste de (N) couleurs que l'on peut exploiter d'une manire approprie,
mais pas des deux  la fois !




> ... je suppose qu'on pourrait envisager de dmarrer  3 barres, une rouge une verte et une bleue et demander (gentiment !) aux *fonctions de gradient* de faire le boulot.


Ne s'agirait-il pas de ces gadgets qui viennent sporadiquement saloper tes palettes ?  ::furax::  Tu as lud plusieurs fois la question, ou tu t'es dfauss sur GIF, qui a bon dos ! *#211*
On n'a pas besoin de telles fonctions quand on peut calculer les couleurs locales en tout point !

Le problme de fond, c'est que l'algorithme dont on discute est incorpor  un programme meccano (comme tu l'a dit  toi-mme) comportant tout un lot d'options personnelles ou disponibles dans Free Pascal/Lazarus, *dont tu ne parles pas* (sans doute parce que tu les trouves videntes ou indispensables), et qui se rvlent inutiles ou dommageables.
Le gros ennui est cela dbouche sur des surprises, qui garent la discussion dans tous les sens et amnent un lot croissant de nouvelles questions.  
 ce rythme, je ne peux plus suivre. Et l'change en fait aussi les frais, parce qu'il n' a pas t possible d'exprimer un dbut de rponse sur d'autres questions voques comme celle de la palette RJB.

----------


## Jipt

j'ai vir la matrice et j'utilise comme rcepteur des calculs des fonctions un TBitmap, je commence  matriser le bestiau, et je vais m'en servir ensuite comme source pour l'affichage du dgrad de gauche (avec un autre bitmap), des courbes dessous (encore un), du dgrad blanc->couleur->noir non visible mais utilisant quand mme un 3e bitmap de travail, et enfin un 4e pour dessiner le cercle,  partir du prcdent.

Bien sr j'ai suivi ma petite ide, on va voir pourquoi juste aprs a :



L'image que vous voyez est une copie d'cran rduite au tiers (640 de large) du programme pass en plein cran avec toute la partie droite qui se redessine automatiquement (pour une largeur d'cran de 1920 px) et le boulot est fait, sur ma vieille machine de 10 ans d'ge et encore en 32 bits, en  peine plus d'une demi-seconde (53x msec).

On va dire que a va.  ::ccool:: 


Pour le reste, j'ai remarqu que tu avais mal ragi sur le fait que je parlais de la map, mais j'en parlais juste comme exemple de conteneur de donnes, pas plus.

Sinon, je persiste et signe pour dire que puisque de toute faon, les calculs finaux seront faits avec des entiers (par exemple, tous les panneaux d'adaptation [non visibles mais bien prsents] de la partie droite de l'image ci-dessus sont pilots, en termes de tailles, par des entiers -- pareil pour la hauteur et la largeur des courbes sinusodales), pourquoi se prendre la tte avec des valeurs comme ci ou comme a, en simple ou double prcision ou mme quadruple avec 32 chiffres aprs la virgule si a te chante, de toute faon a va tre rabot.

Le seul endroit o elles sont admissibles, pour moi, c'est lors du calcul des teintes et dans le traitement du cercle.

Mais pour la rpartition des teintes, puisqu'on sait qu'on en aura 393 216  caser dans une bote rectangulaire, alors autant d'entre de jeu fabriquer la dite bote aux dimensions qui vont bien, les teintes y seront  l'aise et a vitera de se prendre la tte avec des calculs dont les rsultats  virgule, plus tard, ne serviront  rien.




> Pourquoi s'encombrer d'une matrice  1536 colonnes, alors que se limiter  600 serait un compromis simple et raisonnable ? Les rgles de trois ne sont-elles pas l pour raliser les ajustements ncessaires ?


Parce que 1536 / 600 = 2,56, parfaitement incompatible avec une saine rpartition des pixels dans une surface d'affichage. Tu m'aurais dit 768 ou 512, c'tait jouable (768 c'est l'un de mes premiers progs).
Ici on a 360  cause des cercles et des fonctions sinusodales, je viens de faire un essai avec 384, qui serait plus conforme (384 x 4 = 1536), a fonctionne tout autant, un poil plus vite peut-tre.





> Simplement l'une des deux options est en trop: les palettes dcoulent
> - soit de la donne de 3 fonctions couleur { R(x), V(x), B(x) },
> - soit d'une liste de (N) couleurs que l'on peut exploiter d'une manire approprie,
> mais pas des deux  la fois !


J'ai bascul vers les fonctions, il n'empche que pour faire afficher le rsultat des calculs des fonctions avec plein de chiffres aprs la virgule, tous plus prcis les uns que les autres, il va falloir les raboter et comme  l'arme, _je ne veux voir qu'une seule tte_,  ::mouarf:: .





> tu t'es dfauss sur GIF, qui a bon dos ! *#211*


L *je ne suis pas content du tout*, j'ai bien montr la diffrence dans une copie d'cran en bas de page, qui affiche un png parfaitement correct en haut et le mme fichier une fois pass  la moulinette de gnration de gif, qui le perturbe salement. Et je n'ai aucun contrle sur les paramtres de conversion.





> Le problme de fond, c'est que l'algorithme dont on discute est incorpor  un programme meccano (comme tu l'a dit  toi-mme) comportant tout un lot d'options personnelles ou disponibles dans Free Pascal/Lazarus, *dont tu ne parles pas* (sans doute parce que tu les trouves videntes ou indispensables), et qui se rvlent inutiles ou dommageables.


Je ne vois pas de quoi tu parles


Ne m'en veux pas, et on va continuer avec le jaune  la place du vert,  ::zoubi:: 
Demain.
Parce que l, j'en ai un peu assez, et j'ai encore du rangement  faire.

EDIT : j'ai pass la cration du bitmap source (la "matrice") du mode matrice en x et y au mode scanline et accs par pointeurs, rsultat un bte run tombe  environ 150 msec et le passage en plein cran  moins de 400.
 ::bravo::

----------


## anapurna

salut 

quelque soit la faon dont tu prend le problme il va y avoir un moment ou cela coince 
car les paramtres les chelles et les origines sont diffrentes  

pour moi la meilleur des reprsentation du RGB est un cube de 255*255*255 soit 16581375 couleur possible 

le cercle pose forcement une contrainte supplmentaire est une perte de nuance possible pour que tu puissent afficher toutes les nuance de ce CUBE il te faut un rayon d'environs 2298 pixels
car l'aire d'un cercle est PI*r^2
pour tre exacte il te faudrait un rayon de 2297,3932160213100000000 ce que tu ne peut pas faire a lcran

Pour les courbes : 255 de haut et 65025 pixel de long ce qui nous fait pour chaque courbe de couleur une base de 43350 ((65025/3)*2) pixel
plus tu rduit ses chiffres plus l'affichage seras moins "vrai" 

depuis le dbut ce qui a t rpt,il est important de diffrencier l'affichage du calcul

----------


## Jipt

> quelque soit la faon dont *tu* prends le problme il va y avoir un moment o cela coince 
> car les paramtres, les chelles et les origines sont diffrentes


 qui parles-tu ?  wiwaxia ?  moi ?
On ne sait pas




> pour moi la meilleure des reprsentations du RGB est un cube de 255*255*255 soit 16581375 couleur possible


Faux. 256 possibilits par primaire, soit 2563 pour les 3, soit le classique 16 777 216 qu'on retrouve partout dans la littrature.

Et comment afficher un cube sur un cran plat ? Autant le mettre  plat tout de suite, comme avec les courbes droites.  ::P: 

(lire 256 512 768 1024 1280 1536)




> il est important de diffrencier l'affichage du calcul


On est bien d'accord. La discussion porte surtout sur *quoi* afficher et pas trop sur *comment*.

----------


## wiwaxia

@ *anapurna*
Re-bonjour,  ::D: 

Tu mets le doigt sur deux faits essentiels:




> ... depuis le dbut ce qui a t rpt, il est important de diffrencier l'affichage du calcul


En effet, tous les calculs intermdiaires doivent tre faits  l'aide de rels exclusivement; peu importe leur format, des _Single_ peuvent trs bien suffire, et le recours  une prcision de 32 chiffres serait franchement extravagant.
Le format _Extended_ a t employ ici en partie par habitude, mais aussi  titre exploratoire, dans le cas de fonctions trs proches de l'unit sur une partie de leur domaine.

Mais ce qui est en cause, c'est:
a) la drive numrique rsultant de l'intervention d'arrondis en interne, approximations qui n'ont aucune raison d'tre et introduisent des carts gnralement faibles mais incontrlables;
b) la possibilit d'adapter ce que l'on veut reprsenter  tout format d'image, et de se librer du ftichisme arithmtique qui consiste  privilgier  tout prix des valeurs comme 360, ou l'un de ses multiples.




> ... quelle que soit la faon dont tu prends le problme il va y avoir un moment o cela coince car les paramtres les chelles et les origines sont diffrentes  
> 
> pour moi la meilleur des reprsentation du RGB est un cube de 255*255*255 soit 16581375 couleur possible 
> 
> le cercle pose forcment une contrainte supplmentaire est une perte de nuance possible pour que tu puissent afficher toutes les nuance de ce CUBE il te faut un rayon d'environs 2298 pixels ...


Tu as pressenti la difficult de mettre en correspondance chaque point d'un volume (le cube de couleurs) avec celui d'une surface (l'image que l'on voudrait en donner): il est impossible de disposer les 2563 pixels sur un plan, en respectant l'volution des teintes entre chaque point et ses plus proches voisins.
On pourrait d'ailleurs envisager un problme de mme nature, mais numriquement accessible: (255) tant un multiple de (5), comment disposer dans une image rectangulaire ou carre les 523 = 140608 pixels de la forme (5*i, 5*j, 5*k) ? Il existe probablement plusieurs solutions, avec des effets de couleur srement inattendus.

Tout palette de dimension (1) ou (2) correspond  un graphe gnralement situ  la surface du cube, ou une portion de cette dernire.
Le cercle chromatique complet rsulte d'une bijection entre l'intrieur d'un cercle, et la surface du cube prive de l'origine.

On pourrait envisager une infinit de cercles chromatiques , incluant des couleurs moins frquentes comme le gris ou le noir,  condition d'oprer sur un domaine sphrique de couleurs centr  l'origine, au lieu du cube.

----------


## Jipt

> b) la possibilit d'adapter ce que l'on veut reprsenter  tout format d'image, et de se librer du ftichisme arithmtique qui consiste  privilgier  tout prix des valeurs comme 360, ou l'un de ses multiples.


En ce qui me concerne, je privilgie des valeurs intelligentes histoire de speeder les calculs et c'est tout, mais sinon, j'ai bien laiss tes fonctions calculer en rels, juste qu'avec ma combine d'avoir une matrice de 1536, les rgles de 3 en cas de tailles diffrentes pour l'affichage se font toutes seules par des appels systme, et par exemple pour faire ce test j'ai ouvert le prog dans l'EDI, j'ai chang largeur et hauteur de l'image  377 x 213  et c'est tout, je n'ai strictement touch  rien d'autre, j'ai appuy sur F9 pour faire excuter et voil le rsultat, simplement parfait :

----------


## wiwaxia

*Copie d'cran au format GIF* de trois versions (PNG, JPG, *GIF*) de la mme image Bitmap (*#211*]


J'ai du mal  saisir la _dtrioration violente des couleurs originales_ rsultant de la compression GIF  ::mrgreen::  (*#210*).

----------


## Jipt

Bonjour,



> J'ai du mal  saisir la _dtrioration violente des couleurs originales_ rsultant de la compression GIF  (*#210*).


elle est pourtant bien connue, lire + bas

Histoire de boucler cette affaire, quand j'ai vu arriver ton post, j'ai tout lch et ai lanc mon Gimp pour faire une copie d'cran (mode "slectionner une rgion") du bas du premier dgrad en remontant jusqu'au mot "Copie" en rouge.

L'image qui s'est affiche dans Gimp, *sans rien toucher  un quelconque paramtre*, je l'ai exporte une premire fois au format png et on en a le rsultat en haut, puis une seconde fois en gif, avec le rsultat foireux (et bien visible dans les bleus) en bas.



Alors oui, _un mauvais ouvrier a de mauvais outils_, mais si c'tait l'inverse ? Si les mauvais outils gnraient de mauvais rsultats laissant penser qu'il s'agit du mauvais travail d'un mauvais ouvrier ?

Ce que je sais du format gif, c'est qu'il n'est pas capable, *par design*, de rendre les 16 millions de couleurs :



> Une image GIF peut contenir *de 2  256* couleurs (2, 4, 8, 16, 32, 64, 128 ou 256) parmi 16.7 millions dans sa palette.


Alors je ne sais pas par quel miracle a tombe en marche chez toi, mais mha tu devrais aller brler un cierge.  ::mouarf:: 

EDIT :
je me suis souvenu qu'un vieux shareware de PaintShopPro (sous XP) avait une option de comptage des couleurs, alors hop !, ni une ni deux, les fichiers dans l'outil, et le rsultat est sans appel :

----------


## wiwaxia

Voici pour comparaison les palettes RVB obtenues  l'aides des fonctions de couleur (F1, F2, F3, F4), et de la fonction basique linaire par morceaux (FL) - du bas vers le haut pour les palettes  une dimension, et du bord vers le centre dans le cas du cercle chromatique - les aires correspondantes sont gales, dans tous les cas.



Si pour les 4 premires les zones des couleurs primaires tendent  rtrcir, celles des couleurs secondaires (jaune, cyan, magenta) tendent  s'taler - trop peut-tre dans le cas de F3 et F4.
Mme tendance observe dans le cas des 3 palettes monochromes reprsentes ci-dessous.



Rpartition oppose par contre dans le dernier cas, o la forte concentration des couleurs secondaires redonne les raies brillantes que l'on cherchait  viter.



Il est  partir de l possible de rechercher des fonctions plus appropries,  partir des rsultats obtenus.

----------


## Jipt

> Voici pour comparaison les palettes RVB obtenues  l'aides des fonctions de couleur (F1, F2, F3, F4), et de la fonction basique linaire par morceaux (FL) - du bas vers le haut pour les palettes  une dimension, et du bord vers le centre dans le cas du cercle chromatique - les aires correspondantes sont gales, dans tous les cas.


Si on n'a pas les mmes bases, on ne va pas y arriver, c'est sr !

J'ai compar mes sorties avec les tiennes, il m'a fallu zapper celle d'en haut pour construire cette sortie :

et  partir de l on est conformes.

La mienne est construite, de haut en bas, avec F4 F3 F2 et F1, soit :


```

```

a, je l'ai publi, en temps et en heure, et voil que je dcouvre maintenant une *FL* dont je n'ai pas la formule
 ::koi::

----------


## wiwaxia

> Si on n'a pas les mmes bases, on ne va pas y arriver, c'est sr ! ...


Permuter les noms des fonctions n'est peut-tre pas le meilleur moyen de faciliter les changes ...  ::D: 




> ... et voil que je dcouvre maintenant une *FL* dont je n'ai pas la formule  koi:


La dernire fonction, dixit wiwaxia*
*



> Voici pour comparaison les palettes RVB obtenues  l'aides des fonctions de couleur (F1, F2, F3, F4), et de la *fonction basique linaire par morceaux* (FL) ...


est celle qu'utilise tout un chacun lorsqu'il a besoin d'une palette, et *dont tu as reproduit cinq fois le graphe* au cours des prcdents changes:

*#114*

*#167*

*#213*

*#220*

*#225*

J'tais en froit de penser que tu savais de quoi il retourne ...

----------


## Jipt

> J'tais en droit de penser que tu savais de quoi il retourne ...


Jolies images, certes, mais toutes ralises depuis des maps

Je me doutais que c'tait une histoire comme a, et depuis ce matin j'tudie la formule "dents de scie" ou plutt, j'essaye de la mettre en uvre et si c'est facile avec une map, c'est une autre paire de manche quand il s'agit de l'insrer dans CalcMatrIm (qui n'a pas chang de nom,  ::P: ) 

Pour le moment j'en suis l (juste le ncessaire) :


```

```

et a coince au niveau des courbes : je n'arrive pas  carter correctement les 3 couleurs, un exemple :



Alors j'essaye, tout et n'importe quoi, +Pi ou -Pi, x 2 ou x 2 / 3, bref, a finira bien par tomber en marche.

EDIT :
Tiens, a va te plaire, trouv  l'instant au CNRS, et je l'ai passe au colorpicker, le soi-disant vert a plus de bleu que de vert, d'o sa prsence ici,  ::D:

----------


## wiwaxia

Trs belle l'image ... Il intervient probablement la racine cinquime de l'unit dans le plan complexe, en chaque point (x, y) duquel on associe z = x + i*y .

J'ai repris  fond l'expression des fonctions (F1 ... F4) dont le code, htivement rdig, faisait dsordre.
Il y a dans la foule celle de la fonction dfinie par morceaux (FlinM); si cela peut te faire gagner du temps ...



```

```

----------


## Jipt

> Il intervient probablement la racine cinquime de l'unit dans le plan complexe, en chaque point (x, y) duquel on associe z = x + i*y .


Oh ben surement ! Le gamin de 5 ans en est tellement satisfait qu'il est parti se suicider  coups de figues molles, comme on dit en Corse,  ::ptdr:: 




> J'ai repris  fond l'expression des fonctions (F1 ... F4) dont le code, htivement rdig, faisait dsordre.


Et cela m'aura oblig  crer une nouvelle unit pour y ranger tout a dedans.
Bah, c'est pas plus mal, a va allger l'unit principale.

J'avais crit des trucs, mais je m'tais fait un nud dans la tte et j'ai trouv, alors j'ai tout vir j'avais trop honte,  ::D: 

Merci,  ::ccool::

----------


## Jipt

Alors quand mme, testons cette fonction linaire avec morceaux, et a donne a :



Peut-tre pas la plus belle, mais en tout a la plus rapide : 100 msec de moins que ses copines.

Bon, y a pas encore d'images RYB, mme si l'accs est possible (et test), parce que pour le moment c'est passablement moche
Faudra que je compare avec mes vieux premiers essais.

Et sinon, j'ai retrouv a au fond d'un disque, provenance totalement inconnue :



Bon dimanche, si on ne se reparle pas d'ici l.
 ::coucou::

----------


## Jipt

Ola !

Hier, quand tu as post ta refonte des fonctions, je me suis tellement concentr l-dessus que j'en ai zapp ce sur quoi j'tais en train de bosser : la mme ide que toi, que tu as ralise avec tes "morceaux" quand moi, j'avais fait une recherche sur "quation dent de scie" qui m'a amen sur cette page (cliquer sur _Solution_ puis encore sur le _solution_ qui s'affiche pour accder au pdf d'une page) o j'ai dcouvert lquation f(x) = arcsin(sinπx) / π qui m'a d'abord provoqu des sueurs froides car crit comme a, pour moi il y a deux options, du coup : arcsin(sin(pi)*x) / pi ou arcsin(sin(pi*x)) / pi.

Bah, je me suis dit que a serait vite test, si c'est pas l'une c'est l'autre et en effet c'est la seconde version qui serait correcte.

Je le mets au conditionnel car une fois tout a mis en place,


```

```

et l'appel dans CalcMatrIm :


```

```

je n'arrive pas exactement au mme rsultat que toi :
voici le magnifique rendu de *ta* fonction par morceaux,


et voil  quoi j'arrive avec *ma* fonction trigonomtrique


Tout est correct mais je ne suis pas proportionnel  la fentre, comme toi.

Tu verrais ce qu'il faut retoucher dans 


```

```

pour arriver au but ?


Une autre question : pourquoi, dans ta nouvelle version des fonctions F1..4 as-tu vir la trigo, remplace par de l'arithmtique hermtique ?
Merci,

Ah, au passage, ta fonction incR peut se simplifier ainsi :


```
PROCEDURE IncR(VAR u:Real; v:Real); BEGIN u:= u+v; END;
```

it works !

----------


## wiwaxia

```

```

Ces instructions sont anormales: il est rare que (Pi) s'ajoute  un rationnel.

Tu devrais avoir une expression du genre:


```

```




> Une autre question : pourquoi, dans ta nouvelle version des fonctions F1..4 as-tu vir la trigo, remplace par de l'arithmtique hermtique ?


L'algorithme appelle les fonctions Cos(.) et Sin(.), quelle que soit la version qui a t donne; la suite du calcul a t rendue plus systmatique.




> Ah, au passage, ta fonction incR peut se simplifier ainsi :
> 
> 
> ```
> PROCEDURE IncR(VAR u:Real; v:Real); BEGIN u:= u+v;END;
> ```


Je sais, mais je ne laisse pas au processeur le soin de mmoriser un rsultat intermdiaire; et cela ne vaudrait plus la peine d'crire une procdure aussi courte.
Ce sujet pourrait tre longuement discut.

----------


## Jipt

> ```
> 
> ```
> 
> Ces instructions sont anormales: il est rare que (Pi) s'ajoute  un rationnel.
> 
> Tu devrais avoir une expression du genre:
> 
> 
> ...


Bon, j'ai fait un simple copier/coller de ta formule, comme a :


```

```

et voil ce que a donne


 ::aie:: 




> Je sais, mais je ne laisse pas au processeur le soin de mmoriser un rsultat intermdiaire; et cela ne vaudrait plus la peine d'crire une procdure aussi courte.
> Ce sujet pourrait tre *longuement discut*.


Mme pas en deux mots ?
Pour assouvir ma curiosit srieusement titille, avec ta rponse.

----------


## Jipt

Un truc qui me dmangeait, depuis deux jours, car ces traits brillants sont dprimants (oui, je sais, palette = toutes les couleurs donc, bon...)

Alors comme les dgrads sont obligatoirement compresss (sinon il faudrait une image de 1536 px de large), je me suis bricol un petit zoom, genre le truc va rcuprer la zone de couleurs dlimite en haut par le curseur et va la recopier en bas en l'tirant  sa vraie taille, dmonstration :
au clic sur la c--c, le panneau avec le curseur et l'image de zoom s'affichent :


curseur  gauche toute (dit-il fort en levant le poing gauche,  ::ptdr:: )


curseur  peu prs au centre (pour ne pas prendre de risques, et on voit bien que le violent trait cyan s'est bien estomp)


curseur  droite mais pas compltement (faut pas dc..ner non plus,  ::mouarf:: )


Et voili et voilou, demain la suite du RYB (rjb pour les francophones  ::P: )
 ::coucou::

----------


## wiwaxia

J'ai dit: _Tu devrais avoir une expression du genre ..._

et non pas:_Tu devrais avoir l'expression: ..._

Reporte-toi au code que j'ai donn.

----------


## Jipt

> Reporte-toi au code que j'ai donn.


Oui, j'ai vu qu'il y avait un paquet de constantes en rapport aevc Pi, lire dessous

Et donc il faut que j'essaie au pif ?




> J'ai dit: _Tu devrais avoir une expression du genre ..._
> 
> et non pas:_Tu devrais avoir l'expression: ..._.


Alors j'ai essay, en ne me proccupant *que* de la *partie en rouge* puisque, justement elle est en rouge, genre "coucou c'est l que a se passe".

J'ai test avec * et avec /, avec Pi, Pi / 2 , / 3, / 4, / 5, / 6, / 7, / 8, avec 2*Pi / 2, / 3, avec 4 / Pi, 5 / pi, 6 / pi 7 / pi, 8 / pi, rien rien rien, bref, a revient  chercher une aiguille dans l'ocan, en esprant que a va tomber en marche par miracle.

Mais pour le moment,les faiseurs de miracle ne sont pas avec moi,  ::cry::

----------


## wiwaxia

La mthode essais/erreurs est la pire de toutes. 

Et si tu rflchissais ?  ::aie:: 

L'expression 

```
Pi/6) + 2/3
```

est certainement errone. Et si tu avais tout simplement quelque chose comme 2Pi/3 ? C'est un exemple.

----------


## Jipt

> La mthode essais/erreurs est la pire de toutes.


Quand on ne sait pas, on ne peut pas faire autrement.




> Et si tu rflchissais ?


Rflchir, rflchir, je suis en train d'user mes derniers neurones, l !

Un exemple ?
J'ai trouv dans le pdf d'une page dont j'ai parl d'autres manires de faire, je me suis remis  l'tabli, j'ai fait ce genre de test du genre je ne touche pas au rouge et je tripote le vert et le bleu et il faut bien lire les commentaires :


```

```

Tu as bien vu le commentaire ? Je te le remets en gros Phi = Phi - 2, d'o *0 = -2*.

Bon, moi j'ai les neurones qui fondent, l, et a date de 5 minutes

----------


## Jipt

J'ai fait un autre essai, minimaliste :


```

```



Les trois traces sont l'une sur l'autre, rsultat blanc, ouf, je respire.

Je tente une modif globale :


```

```



Les trois se dcalent, pas de ce que j'aurais pens, mais bon, on va inverser le signe, pour comprendre :


```

```



Et l c'est la grande misre noire, ou plutt rouge et bleue ! Tiens, o est pass le vert ?

Franchement, des rsultats comme a, a donne *vraiment* envie de tout abandonner.

----------


## wiwaxia

Essaie d'abord *deux* fonctions:


```

```

avec K = 2*Pi/3 (par exemple).

Si cela convient, tu pourras rajouter ensuite


```
3: g:=fx_jpt(Phi - K , fx); ou //g:=fx_jpt(Phi + 2*K , fx);
```

Je ne vois pas le rle de _fx_ .

----------


## Jipt

Bonjour,




> Essaie d'abord *deux* fonctions:
> 
> 
> ```
> 
> ```
> 
> avec K = 2*Pi/3 (par exemple).
> 
> Si cela convient,


+ K ou - K c'est pareil, a ne convient pas.

Dans un cas le trac vert est lgrement dcal dans un sens par rapport au rouge, dans l'autre cas a dcale dans l'autre sens.

N'coutant que mon courage, j'ai tent avec K = 4*Pi/3, ce qui m'a amen aux mmes rsultats, juste que le dcalage est un peu plus grand.

Et pour tre complet, je rappelle que Phi := Pi_sur_La * Xm;.
Ceci tant dit, mes essais m'ont montr que j'avais les mmes rsultats sans Pi, genre Phi := 2 * Xm / La;.




> tu pourras rajouter ensuite
> 
> 
> ```
> 3: g:=fx_jpt(Phi - K , fx); ou //g:=fx_jpt(Phi + 2*K , fx);
> ```


Je suppose que tu voulais dire b:= ?
Je n'aime pas supposer, surtout en plein brouillard.




> Je ne vois pas le rle de _fx_ .


fx permet de passer  la fonction d'appel de Fxxx le numro qui va bien en provenance de l'ihm (c'est l depuis le dbut) :



```

```


Malheureusement, aujourd'hui a va tre compliqu : pas disponible, soit pas du tout ce matin et ok l'aprme, soit moitt-moitt, a va dpendre du temps que va prendre mon premier rdv

Tiens, cadeau pour te faire patienter (c'est de saison) :



Ah, cet orange

----------


## wiwaxia

Une autre version de la mme fonction linaire par morceaux:



```

```

Elle doit aussi bien fonctionner sur les domaines [0 ; 2*Pi] et [-Pi ; Pi]; j'ai fait un test sur les valeurs relles:

----------


## Jipt

Je suis rentr tard et je repars en dbut d'aprme. J'espre  mon retour trouver la constante qui manque parce que l je suis grave coinc :




> ```
> 
> ```


IPis3 inconnue chez moi
J'ai tent au hasard avec Pi / 3 puis 2 * Pi / 3, rsultat moche dans les deux cas et je n'ai pas le temps d'essayer toute l'tendue des nombres entiers  la place de ce I assez peu parlant, donc

----------


## wiwaxia

> ... J'espre  mon retour trouver la constante qui manque parce que l je suis grave coinc :
> 
> IPis3 inconnue chez moi
> J'ai tent au hasard avec Pi / 3 puis 2 * Pi / 3, rsultat moche dans les deux cas et je n'ai pas le temps d'essayer toute l'tendue des nombres entiers  la place de ce I assez peu parlant, donc ...


Oh, pardon, j'ai oubli  ::D: 
IPs3 = "inverse de Pi sur 3" = 3 / Pi .

----------


## Jipt

OK vendu !

J'avoue humblement que cette histoire d'Inverse m'a travers l'esprit un court instant, parce que IPi j'ai connu, mais ailleurs et autrement,  
 ::ptdr:: 

Bon, tout a pour dire que a fonctionne, donc que ma bascule vers RYB (rjb) fonctionne galement, avec les dfauts inhrents aux couleurs pures, et qu'il faudra apprendre  faire avec :



Je prparerai un zip plus tard, l je n'ai pas le temps, je file.
 ::coucou:: 

 et c'est bien, on n'a pas atteint les 300 pages,  ::mouarf:: 

Merci pour tout, merci  toi et aux autres.

----------


## Jipt

Oui oui, c'est , padipanik, juste que je reviens sur un truc 30 secondes car ce que je n'ai pas dit ce matin, c'est que je me suis replong dans mes vieux bouquins scolaires, classe de seconde, chapitre "trigo", si si !, et en 3 coups de cuiller  pot, j'ai maintenant 3 sinusodes entires l o je n'avais que des bouts, prsents l il y a 9 jours, et par rapport au code d'origine, il suffisait non pas de bidouiller dans tous les sens mais de rflchir posment, aprs avoir lu le chapitre qui va bien !


Comment j'ai fait (les anciennes lignes sont en commentaires) :



```

```

T'avais raison, wiwaxia, mais j'avais tout oubli

Le pire c'est que tu l'avais dit dans ta rponse, mais dans un langage que je n'arrivais pas  comprendre.
Rappelez-vous, le 12 mai, page 184, j'crivais 



> certains voient dans leur tte le rendu de (t - 2*Pi/3) et la diffrence avec (t + 2*Pi/3), et moi je ne vois rien


Je te prsente mes plus sincres excuses, et pour me faire pardonner, une trouvaille sur la playlist de Fip et la premire a entrain la seconde, mais je spoile que peut-tre  notre poque timore, NSFW.






OK, mon beau sapin roi des forts est vert, mais ils sont en arrire-plan, on ne va pas chipoter,  ::D: 

Calmez-vous et admirez les palettes et les teintes RYB,  :8-): 



Oui, je suis en plein dbriefing perso,  ::mouarf:: 
Et mine de rien, 13 pages et 252 posts en comptant celui-ci, quelle aventure !
Commence le 10 avril, termine 40 jours plus tard, foufff.
 ::coucou::

----------


## Jipt

Bonjour,

toujours pench sur les vieux machins qui m'ont tant fait souffrir ces dernires semaines, j'pure, j'analyse, je vrifie je triture et je corrige et si je viens vers vous ce matin c'est parce que je suis face  un mystre, comme quoi a n'est pas encore bien rentr, tout a.

J'ai un bout de code cens dessiner les 3 courbes, a le fait mais les couleurs B et V sont inverses :





```

```

Le "cercle des mesures d'angles  retenir" (souce) 

m'indique que si je me positionne  midi (point_de_dpart [3 h] + Pi/2 soit 12 h), un tiers de cercle plus loin,  8 h je serai  -5*Pi/6 et un tiers de plus m'amnera  4 h, soit -Pi/6.
Le site ne montre pas le sens mais j'ai galement capt qu'on parcourt habituellement le cercle dans le sens inverse dad'um, en commenant  3 h.
Sauv, j'en ai trouv un autre qui le montre :

Bien.
Tout cela est beau et bon et je l'ai compris, la question c'est : pourquoi j'ai du bleu dans l'image l o je devrais avoir du vert et inversement ?

Question subsidiaire : 
pourquoi dans l'quation de wiwaxia la teinte varie-t-elle sur [0 ; 2*Pi[ ? Quand on regarde les spcs des pixels, a varie de 0  255.

Pour calculer ce qui prcde, je me suis grandement inspir de son petit post, que j'ai synthtis ainsi :


```

```

Et a colle avec le parcours du cercle en sens inverse.
D'ailleurs, si je l'applique tel quel, les couleurs sont bonnes :


Mais je veux que le rouge dmarre en haut, il me faut donc tout dcaler de +Pi/2 sur le cercle et donc, a m'inverse vert et bleu, voir + haut.

Merci pour les explications.
Ah !, en me relisant et en comparant la formule de wwx et le cercle du site, je constate que wwx a invers les signes "-" et "+".
Pourquoi, camarade ?

----------


## anapurna

salut 

tu calcul des coefficient de couleur 
matriellement rien ne tempche d'intervertir les indice de couleur
au lieu de 



```

```

essai 



```

```

----------


## Jipt

> matriellement rien ne tempche d'intervertir les indice de couleur
> au lieu de 
> 
> essai


Non.

Je *veux* une *explication*.

Je ne peux pas continuer  avancer dans le brouillard,  coups d'essais, wiwaxia l'a bien dit il y a pas longtemps.

Je vois le cercle sur le papier, avec mon crayon j'avance de 12 h  8 h puis  4 h et j'ai le rsultat inverse de ce que je pensais obtenir. Pourquoi ?

----------


## wiwaxia

> ... Je *veux* une *explication*.
> 
> Je ne peux pas continuer  avancer dans le brouillard,  coups d'essais ... 
> 
> Je vois le cercle sur le papier, avec mon crayon j'avance de 12 h  8 h puis  4 h et j'ai le rsultat inverse de ce que je pensais obtenir. Pourquoi ?


L'axe (x'x) de ta matrice est orient vers la droite, et (y'y) *vers le bas*, de sorte que tu travailles dans un repre indirect: tout cercle trigonomtrique y est orient dans le sens rtrograde.

Je ne peux pas prolonger.

Il en a de la chance, le *cougouar*.
Je crois d'ailleurs qu'il s'agit plutt d'une panthre des neiges.

----------


## Jipt

> Je ne peux pas prolonger.


Dommage, car tu me laisses sur ma faim (de couguar,  ::mouarf::  [et attention, joke  double dtente,  ::ptdr:: ]).

(Tiens, avais-tu remarqu, dans le bas du site que tu cites ?


Et pourquoi je parle de ryb plutt que de rjb ? Parce que ryb tu peux le prononcer  rib' , c'est instantan, alors que pour l'autre il faut se dtruire la bouche  articuler air-jib, beuark, il y a un temps de reconfiguration de la bouche entre le "r" et le "j".

Et tant qu'on est dans la parenthse, tu sais, ces histoires d'expert et compagnie sur les forums, a me fait grandement rigoler car c'est juste li  la quantit de posts que tu gnres, peu importe leur qualit. Alors bon...)

Bon nos moutons, avant qu'ils ne se fassent dvorer par le loup :



> L'axe (x'x) de ta matrice est orient vers la droite, et (y'y) *vers le bas*, de sorte que tu travailles dans un repre indirect: tout cercle trigonomtrique y est orient dans le sens rtrograde.


comm' d'hab', je ne comprends pas ce que tu racontes.
Pour la bonne et simple raison que a devrait s'appliquer  *tout le cercle* et donc galement au point de dpart  midi, qui devrait alors se retrouver  6 h.

Tu parles de "rtrograde", je parle de sens trigonomtrique, on le voit avec la flche (petite image du cercle), et je ne change pas de sens en cours de route.

Je suspecte une blague avec le cosinus, ngatif sur x'-0 et positif de l'autre ct, ce qui fait que a impacterait la manire de rendre V et B, mais je ne vois pas comment le cosinus interviendrait dans mes quations avec juste du sinus.

Tu vois, je rflchis, j'entretiens mes neurones, mais des fois, des choses videntes pour certains sont totalement opaques pour d'autres (ai vu sur un site des formules avec sin2(x) sans aucune explication : j'ai tout simplement fui).

Prends ton temps pour prolonger, car j'ai vraiment besoin d'une explication comprhensible.

----------


## anapurna

salut 

effectivement tu n'as pas compris le code

pourquoi 2* PI c'est simplement que pour faire le cercle trigonomtrique tu vas de 0 a pi (0..180) et de PI a 0 (180..360)

Les trois points que tu nous donne sont les 3 position initiale a fin de diviser le cercle en trois point l'angle au sommet en passant par le centre doit tre de 60 
ce qui veut dire que si tu relis deux point au centre tu devrait tre en mesure de reprsenter un triangle isocle  
tes trois points se dplace symtriquement sur le cercle 
les trois point font un tour complet du cercle pour dfinir tes 255 valeurs 
imagine que tu as trois cercles distinct un pour chaque couleur 
tes courbe sont de type sinusodale elle dpendent donc de t du temps et doivent couvrir 2 phase(Pi)

----------


## Jipt

> effectivement tu n'as pas compris le code


Et je n'ai pas compris ton post non plus... 




> pourquoi 2* PI c'est simplement que pour faire le cercle trigonomtrique tu vas de 0 a pi (0..180) et de PI a 0 (180..360)


Sans blague ? Non l quand mme, a fait des dizaines d'annes que je le sais, a. Faut pas me prendre non plus pour le dernier des abrutis.




> Les trois points que tu nous donne sont les 3 position initiale afin de diviser le cercle en trois point *l'angle au sommet en passant par le centre* doit tre de 60


Pas compris la seconde partie, celle en gras. 




> ce qui veut dire que si tu relis deux point au centre tu devrait tre en mesure de reprsenter un triangle isocle


Oui. Et alors ?




> tes trois points se dplace symtriquement sur le cercle


Rien compris non plus. 
Les trois points se dplacent ensemble sur le cercle l'un derrire l'autre, chacun spar de 120  de son suivant, et je ne vois aucune symtrie l-dedans.




> les trois point font un tour complet du cercle pour dfinir tes 255 valeurs


Ben oui, tu abuses, l. Je sais bien que je suis neuneu, mais il y a des limites, hein.




> imagine que tu as trois cercles distinct un pour chaque couleur


Oui, et alors ?




> tes courbe sont de type sinusodale elle dpendent donc de t du temps et doivent couvrir 2 phase(Pi)


Ben oui, c'est bien ce qu'elles sont et ce qu'elles font, si tu regardes bien mes images.

Et le plus fort, c'est que *tu n'as pas rpondu  la question* : pourquoi les couleurs V et B sont-elles inverses ?

----------


## anapurna

salut 
voila les propriete que j'essay de t'exposer 

aprs relecture je me suis peut tre un peu emball rapidement
et effectivement je n'ai pas rpondu  ta question 

en faites je comprend pas trop la question qui te taraude exactement 

reprenons ton code 


```

```

on vas le remettre en forme 



```

```

que tu raproche de se code ci



```

```

tu veut dcaler de Pi/2 si j'ai bien compris 

imaginons que le rouge est a 0 soit 0 =0
le vert quand a lui on vas a  0- 2*PI/3 soit environs 8 heure 30 soit 135   = 2PI/3
et le bleu vas 0+2*PI/3 donc 10 heure 30 soit 225 ou -135    = -2PI/3

on decale de PI /2 soit 90 = PI/2 
pour le vert 135+90 = 225  ou -135  = -5PI/6
pour le bleu  -135+90= -45 ou 315  = - PI/6 

il suffit de regarder ton cercle des mesure est de chercher l'angle droit en partant de la valeur initiale

----------


## Jipt

> en fait je comprends pas trop la question qui te taraude exactement


Pas la premire fois que je me demande si je suis *bien* lu et compris.
Pourtant, a a l'air clair :



> Mais je veux que le rouge dmarre en haut, il me faut donc tout dcaler de +Pi/2 sur le cercle et donc, a m'inverse vert et bleu, voir + haut.


Je veux que le rouge dmarre en haut,  midi,  12 h,  Pi/2,  90 



> tu veux dcaler de Pi/2 si j'ai bien compris


Tu vois, quand tu veux,  ::P: 

Sauf qu'aprs tu te fais des nuds :



> imaginons que le rouge est a 0 soit 0 =0
> le vert quant  lui va   0-2*PI/3 soit environ 8 heure 30 soit 135   = 2PI/3
> et le bleu va  0+2*PI/3 donc 10 heure 30 soit 225 ou -135    = -2PI/3


Dj a c'est faux, car je dcoupe le cercle en 3 tronons gaux, donc chacun de 120  et donc le vert  120 et le bleu  240, soit, en regardant ton cercle,  2Pi/3 puis 4Pi/3, aussi not -2Pi/3.

Et en fait, le problme est l, mais je n'ai pas (encore) d'explication ; en reprenant l'exemple de wiwaxia, on lit :



> ```
> 
> ```


que j'ai fait suivre dans le post d'origine par a :



> Et a colle avec le parcours du cercle en sens inverse.
> D'ailleurs, si je l'applique tel quel, les couleurs sont bonnes :


En fait le problme est l : tous les cercles trigo du web comme mes bouquins scolaires montrent un parcours partant de 3 h et tournant dans le sens inverse dad'um, avec dans la partie suprieure du demi-cercle des valeurs de Pi positives pour les points remarquables, et des valeurs ngatives pour le demi-cercle infrieur, qui va de 9 h  3 h en passant en bas par 6 h.

Et le code de wiwaxia est invers par rapport a, et c'est a que je ne comprends pas et que je veux qu'on m'explique.

----------


## Jipt

Bonjour,

ma question n'inspire pas grand monde, on dirait

Bah, a me permet de faire des tests, des essais, des recherches, etc.

Ce matin j'ai pris le taureau par les cornes et j'ai dcid de comprendre le "parcours du cercle", en partant d'un simple bitmap sur lequel je dessine une courbe rouge.

Suite  un bug d'inattention (mal rveill -- mais tout sert  tout) lors d'un copier/coller mal avis, (largeuraffichage := MyBitmap.Width div 2, div 2 en trop  ::aie:: ), juste une moiti de la cible est calcule et affiche avec for x := 1 to largeuraffichage do et il se trouve que a affiche donc de 1  la demi-largeur et c'est la partie *infrieure* de la courbe qui est dessine.

En remplaant iY := demihauteur +Round(... par iY := demihauteur -Round(... a *inverse* le rendu : la moiti de courbe est *en haut*.
Et c'est li au fait que ce qu'on voit en haut de la courbe (valeurs leves supposes, ce qui est le cas, le sinus passe de 0  demihauteur et redescend) est en fait en bas dans les coordonnes de l'objet d'affichage (qui commence  gauche en haut  0,0) :
- tout en haut du graphique c'est la coordonne "x, 0"
- tout en bas c'est la coordonne "x, hauteuraffichage".
a surprend, et il faut sans arrt penser  l'envers.

Le code (on peut difficilement faire plus court et plus simple) :


```

```

Et  partir de ces quelques lignes j'ai essay diffrentes valeurs de decalagesurlecercle, que je mets dessous, avec les rsultats :


```

```

J'tais tout content, je me suis dit que j'allais enfin tordre le coup au problme des 3 courbes o V et B sont inverss, j'ai scrupuleusement recopi mes lignes de cette tude vers le projet "3_courbes", j'ai excut et patatras, toujours cette inversion

J'ai tent avec +Round(..., mme topo, je me suis dcid  rdiger *ce* post pour vous faire part de mon dsarroi, ce qui m'a amen  regarder ce que j'allais copier/coller dans mon brouillon de post et d'un coup, je me suis dit que puisque tout marchait  l'envers dans cette histoire, il y avait une chose que j'avais oubli d'inverser : le dcalage pendant le parcours du cercle.
Alors j'ai tent a


```

```

et c'est enfin tomb en marche correcte !


Mais je n'ai pas l'explication rationnelle et intelligente de pourquoi tout le monde dessine le cercle trigo avec une flche indiquant le sens inverse dad'um 

alors que je constate qu'il faut avancer dans le sens naturel dad'um.
 ::koi:: 

PS : je viens de faire l'essai, a fonctionne aussi avec +Round(..., faut juste penser  inverser l'affichage

```

```

et bien se rappeler que la constante decalagesurlecercle doit tre prcde du signe "-".
Rsultat, a met en vrac toute la liste des decalagesurlecercle := valeur; // commentaire, mais a prendra 5 minutes  refaire, paniproblem'

+++
J'ai une autre question tordue, je la garde pour + tard.

----------


## anapurna

Salut 




> Dj a c'est faux, car je dcoupe le cercle en 3 tronons gaux, donc chacun de 120  et donc le vert  120 et le bleu  240, soit, en regardant ton cercle,  2Pi/3 puis 4Pi/3, aussi not -2Pi/3.


il faut absolument que j'arrete le vin le midi a ne me reussi pas ^^
effectivement 360 div cela 3 fait 120 
je ne sais absolument pas sur quel base je suis partie pour faire ma division


bon a priori tu as trouv ton erreur tu a oubli de soustraire la valeur de 255 afin d'inverser ta courbe

----------


## Jipt

> bon a priori tu as trouv ton erreur tu as oubli de soustraire la valeur de 255 afin d'inverser ta courbe


Non, je n'ai rien trouv qui soit global et reproductible.

J'ai encore pass un temps dment sur le net pour rien, personne n'explique. Chacun balance ses formules, "fais comme a" mais si on veut modifier quoi que ce soit a part en sucette...

Pour le moment, j'en suis l et je ne suis pas du tout satisfait car, si je parcours le cercle dans le sens de la flche (enfin !), c'est en tordant le cou aux valeurs de dphasage, qui devraient tre  l'oppos de ce qu'on voit dessous :


```

```

Alors tout le monde va dire "_mais inverse les signes avant round et aprs largeuraffichage_",  quoi je rpondrai que je ne vous ai pas attendu pour en avoir l'ide, mais que a ne va pas : je me retrouve avec mes inversions V <> B ou R <> V selon que je joue avec 255 ou pas pour la valeur du point.Y.

Bref, c'est toujours autant incomprhensible, et donc non-maintenable.

----------


## Jipt

J'ai ressorti un bouquin de "*gomtrie et statistique*" de 1re D et, dans le chapitre "*Mouvement vibratoire simple*" je peux lire la chose suivante,  propos de l'quation vecteurOM = vecteurOA.cos(omega.t + alpha) [c'est moi qui cris en toutes lettres parce que pour faire ces lettres grecques ici, laisse tomber]



> Le coefficient alpha que l'on peut supposer positif (en changeant si besoin est alpha en alpha + ou - Pi) est


Alors voil : dans un bouquin de math on *suppose* des choses, et on les *adapte*  notre besoin si elles ne nous *conviennent pas*, c'est a ?

Y a pas un prof de math quelque part pour expliquer ? Parce que l, ce "*si besoin est*" m'a laiss tellement sans voix que j'en poste mon dsarroi.


Et pour tout vous avouer, si a se trouve, c'est peut-tre  partir de l que j'ai commenc  dcrocher, parce que moi, les thormes alatoires et les quations adaptatives, euh, c'est loin d'tre une science exacte, hein.

----------


## wiwaxia

> ... Mais je n'ai pas l'explication rationnelle et intelligente de pourquoi tout le monde dessine le cercle trigo avec une flche indiquant le *sens inverse dad'um* 
> 
> alors que je constate qu'il faut avancer dans le *sens naturel dad'um.*


C'est quoi, le _sens naturel dad'um_ ?

Le sens horaire (ou horlogique, rtrograde) est au dpart le sens de dplacement de l'ombre de tout objet  la surface du sol, en tout lieu de l'hmisphre Nord situ au-dessus du tropique du Cancer (latitude ~23 26'), et donc celui de l'ombre du style sur la table de tout cadran solaire.
C'est devenu tout naturellement le sens de rotation des aiguilles des horloges qui les ont remplacs.

Le sens trigonomtrique (ou antihoraire, direct) est celui de la rotation de la Terre tel que le verrait un observateur immobile situ sur l'axe des ples, le sens Sud/Nord correspondant  celui de ses pieds vers sa tte; tourn constamment vers le Soleil, il verrait sous ses pieds  les points de la surface terrestre se mouvoir vers sa gauche.
La dfinition du sens de rotation est donc intimement lie  celle de repre trirectangle _direct_ ;  tout repre orient direct (Oxy) de dimension (2), il faut associer un 3me axe (z'z) orthogonal au prcdent,  passant par l'origine (O) et dirig vers l'avant (donc vers le lecteur qui observe la figure).




> ... +++ J'ai une autre question tordue, je la garde pour + tard.


Dis toujours: si cela peut viter une prise d'otages ...  ::aie::

----------


## Jipt

> C'est quoi, le _sens naturel dad'um_ ?


Rh, dad'um = Des Aiguilles D'Une Montre.
Bon, vu ton explication, probable que je me suis fourvoy avec le sens de "naturel".




> -- snip --


Tu m'embrouilles compltement,  ::cry:: 




> Dis toujours: si cela peut viter une prise d'otages ...


Non, je veux d'abord rgler cette histoire de parcours, parce qu'_in fine_ tu n'en as rien dit.
Bah, a fait deux heures que je gamberge dessus, et j'en suis l :

Je n'ose pas l'crire, mais pourtant, un test rapide le confirme, serait-il possible que depuis un mois on ait confondu le vert et le bleu ?
Ou qu'on *croit* parcourir dans le sens inverse dad'um quand on parcourt dans le sens direct ? [ah ben du coup, avec ce qui prcde, je ne sais plus comment dire]

Car si je reprends le cercle trigo en faisant bien attention et en n'utilisant que des coefficients alpha *positifs*, il n'y a pas de secret, la deuxime onde  se dessiner est bleue.

D'ailleurs, si je commente ses instructions, pof !, a pu ! Image en haut  gauche :


Et l, en regardant le code du vert, son coeff alpha est  septpisursix,  8 h sur le cercle (-5PI/6 en rouge).

Parce qu'il n'y a pas de secret ni de mystre avec la courbe rouge, qui se met toujours o je lui demande gentiment, exemple avec je sais pas, moi, euh, quatrepisurtrois ?
Allez, soyons fous, et le rsultat est en bas  droite.

4PI/3 c'est  7 h sur le cercle, not en bleu -2PI/3 et donc *AVANT* la courbe verte *SI* on tourne dans le sens habituel dad'um, et si je change de param et que je prends cinqpisursix, image en haut  droite, on est  10 h sur le cercle et *APRS* la courbe verte.
Donc on tourne  l'envers de la flche,  l'envers du sens trigo,  l'envers des aiguilles de la montre, un vrai truc de malade guedin jobastre indiqu nulle part.

Enfin, il me semble.

----------


## wiwaxia

J'ai longuement recherch dans mes programmes ce qui aurait pu t'induire en erreur, et n'ai rien trouv. 
Je place par habitude le rouge  l'origine des angles (O , " trois heures" comme tu dirais), et le vert suit en principe en haut  gauche, centr sur la valeur 120 (" onze heures"); mais il se peut qu'il se soit une fois ou l'autre retrouv par inadvertance en bas ( -120 ≡ 240 modulo 1 tour).

Il est vain de discuter des dcalages angulaires sans avoir prcis les proprits essentielles de la fonction F(t) en cause:
F(t) est une fonction: a) priodique, de priode gale  (2*Pi) - la variable (t) reprsente alors la teinte, et qu'on l'exprime en une autre unit (en degr, grades ou cycles) de la dnature pas;
b) paire et maximale en (0): la fonction Cos(t) vrifie ce critre, de mme que toutes les fonctions gnratrices que l'on a envisages.

La dtermination du pixel rpond alors au schma suivant:


```

```

Un simple inversion de signe conduit aux couleurs symtriques, le vert se retrouvant en bas.
Exemple: pour la suite des cinq fonctions mises en comparaison (*#201* , *#230*), la couleur locale dcoule de quelques instructions, et le renversement du cercle chromatique rsulte d'un simple changement de signe:


Le procd s'applique  tout fonction priodique, par exemple  G(s) dfinie sur [-3 ; +3] et de priode gale  (6): il faut alors imposer un dcalage gal  un tiers de priode, soit (2):
Il s'agit d'un calcul moins simple, dont je n'ai pas parl.




> J'ai ressorti un bouquin de "*gomtrie et statistique*" de 1re D et, dans le chapitre "*Mouvement vibratoire simple*" je peux lire la chose suivante,  propos de l'quation vecteurOM = vecteurOA.cos(omega.t + alpha) [c'est moi qui cris en toutes lettres parce que pour faire ces lettres grecques ici, laisse tomber]
> 
> Alors voil : dans un bouquin de math on *suppose* des choses, et on les *adapte*  notre besoin si elles ne nous *conviennent pas*, c'est a ?
> 
> Y a pas un prof de math quelque part pour expliquer ? Parce que l, ce "*si besoin est*" m'a laiss tellement sans voix que j'en poste mon dsarroi.
> 
> Et pour tout vous avouer, si a se trouve, c'est peut-tre  partir de l que j'ai commenc  dcrocher, parce que moi, les thormes alatoires et les quations adaptatives, euh, c'est loin d'tre une science exacte, hein.


Il n'y a qu'une seule trigonomtrie, mais diverses formules plus ou moins appropries  l'usage qu'on veut en faire; et l'on se retrouve rapidement dans une impasse sans un minimum de connaissances et d'entranement, indispensables  la libert et au recul ncessaires au bon choix des expressions. Tu viens de faire les frais de la mthode Meccano, et tu devrais tenter d'en tirer une leon ... d'autant que tu as suivi des cours de maths, et que tu peux donc relire un cours.
Un livre de Maths de niveau secondaire technique te serait d'un excellent secours: aisment comprhensible, et allant  l'essentiel.
Il t'viterait de te noyer das un verre d'eau.

----------


## Jipt

> Un livre de Maths de niveau secondaire technique te serait d'un excellent secours: aisment comprhensible, et allant  l'essentiel.
> Il t'viterait de te noyer dans un verre d'eau.


J'ai.
Avec de trs jolis exemples de cercles trigos avec les points remarquables dessus, un peu comme a :



Ce que j'ai dit hier, c'est que j'ai vir les -xPi/z, remplacs par des + (le bouquin donne les correspondances, comme dans la moiti infrieure de l'image ci-dessus), et les choses fonctionnent bien *SI* je parcours le cercle dans le sens des aiguilles d'une montre,  l'inverse donc de la flche habituelle (je viens cependant de voir des images o "ma" flche est utilise, mais le site est non-consultable si pas inscrit, donc je n'ai pas d'explication sur l'utilisation de ce sens).

Et donc, je redis que pour parcourir mon cercle, je dmarre en haut  12 h (Pi/2), je "descends par la droite" jusqu' 4 h (11Pi/6), et de l je continue  8 h  7Pi/6 pour remonter  Pi/2 et voil.
Et j'ai bien rouge -> vert -> bleu.

Cherchez l'erreur (s'il y en a une).

EDIT : j'ai oubli de donner les codes, hier ; je me suis rdig un pense-bte (anti-sches ?  ::D: ) comme a :


```

```

En fait, dans la vraie vie, le vrai code se passe en deux temps :


```

```

et a 3 fois, donc.
Ce qui fait que si je veux faire un test rapide et tout dcaler, il me suffit de faire, 3 fois, 


```
    alpha := une_valeur + ou - une_autre_valeur
```

et bon sang, a fonctionne tip-top, mes trois courbes se dplacent ensemble, que du bonheur.

Exemple avec la correction -pisurdeux, comme a tu seras content, le rouge dmarre  pisurdeux-pisurdeux = 0 = 3 h :


```
alpha := pisurdeux-pisurdeux;
```

----------


## Jipt

J'arrive  synthtiser tout a d'une manire fort sympathique et trs agrable  l'utilisation.

J'ai vir cette variable alpha, remplace par 3 autres ainsi :


```

```

et le cur des 3 courbes se prsente ainsi :


```
y := demihauteur + round(demihauteur*sin(i*2*Pi / largeuraffichage + BPhaseShift)); // ou RPh... ou GPh...
```

Rsultat, *une seule valeur  ajuster*, et les autres se synchronisent  120  prs, trop fastoche  ::ccool:: 

Exemples :


```

```

Bien sr, ta manire de faire fonctionne aussi, 


```

```

mais elle me donne l'impression de faire _un coup j'avance un coup je recule comment veux-tu que_ nan mais qu'est-ce que j'raconte, l,  ::ptdr:: , alors que la mienne dcrit tranquillement son petit bonhomme de chemin en cercle.
a t'ennuie si je la prfre ?

J'ai fait plein de tests, je n'ai jamais pu prendre cette manire de faire en dfaut, voici le dernier test avec une valeur pifomtrique mais quand mme estime entre 5PI/6 et PI, et c'est bien ce qu'on a  l'cran :


```

```



Pas trop libre c't'aprme, la suite  pluche,
 ::coucou::

----------


## wiwaxia

> J'ai.
> Avec de trs jolis exemples de cercles trigos avec les points remarquables dessus, un peu comme a ...


... Que tu ne sais malheureusement ni lire ni utiliser correctement.
Toutes les valeurs des angles mentionnes, parcourues dans le *sens trigonomtrique* (le seul valable en analyse et en gomtrie)  partir de l'*origine P(0) = (1, 0)* = intersection du cercle avec (Ox) - se succdent dans l'ordre croissant:
1er quadrant:  θ/π = 0 , 1/6 , 1/4 , 1/3
2nd quadrant:  θ/π = 1/2 , 2/3 , 3/4 , 5/6 
3me quadrant:  θ/π = 1 , 7/6 , 5/4 , 4/3 
4me quadrant:  θ/π = 3/2 , 5/3 , 7/4 , 11/6



> ... Et donc, je redis que pour parcourir mon cercle, je dmarre en haut  12 h (Pi/2), je "descends par la droite" jusqu' 4 h (11Pi/6), et de l je continue  8 h  7Pi/6 pour remonter  Pi/2 et voil.
> Et j'ai bien rouge -> vert -> bleu.
> 
> Cherchez l'erreur (s'il y en a une) ...


Eh bien oui, il y en a une , et une grosse: tu envisages des angles dcroissants:
(Pi/2 + 2*Pi = 5*Pi/2 , 11*Pi/6 , 7*Pi/6)donc une rotation dans le sens ngatif, ce dont tu ne tiens pas compte par la suite.
Tes conventions relvent du changement de variable angulaire: ϕ = (π/2) - θ
que tu n'es malheureusement pas en mesure de grer clairement, d'o le sac de noeuds dans lequel tu t'emmles les pinceaux depuis deux jours. Le bricolage que tu proposes ne rsout rien.
C'est de l'enfantillage que de remettre en cause une convention universelle, celle du sens trigonomtrique, qui est  la base de l'analyse vectorielle - et mme de l'analyse tout court, celle qui tablit les proprits des fonctions Sin(t) et Cos(t).

La succession des teintes sur le cercle chromatique est indpendante du sens de rotation. 
Si le maximum d'intensit du rouge se place  la position d'angle Alpha, celle du vert sera dcale d'un tiers de tour (2*Pi/3) par exemple dans le sens positif, et celle du bleu de la mme quantit en sens oppos; si l'on reprend la fonction (F) dj voque (*#268*), on obtiendra pour les composantes de couleur:


```

```

Pour inverser la succession des teintes (RVB) du cercle chromatique, il suffira de permuter les signes des deux dcalages, comme l'avait pressenti *anapurna*.

----------


## Jipt

Fouhhh, quelle vole de bois vert,  ::aie:: 




> Eh bien oui, il y en a une , et une grosse: tu envisages des angles dcroissants:



H bien oui, et alors ? C'est interdit ? Il faut arrter illico presto toutes les horloges  aiguilles et les bannir  tout jamais parce que ces choses ne tournent pas dans le bon sens ?
Bon, tiens, voil :


```

```

Tu prfres ? 




> C'est de l'enfantillage que de remettre en cause une convention universelle, celle du sens trigonomtrique, qui est  la base de l'analyse vectorielle


Je ne la remets pas en cause, je la laisse o elle est et je parcours le cercle autrement.
Tu me permettras de prfrer cette autre manire de circuler, car d'une part il me plait de prendre l'autoroute  contre-sens, le paysage y est plus joli et je vois une certaine logique  additionner des choses pour avancer, et d'autre part a ne m'empche pas d'arriver au but.
Je te l'ai dit, pour aller de Nice  Rome je passe par New York.
En quoi a drange quelqu'un, si ce n'est ceux qui se cramponnent  leur sens trigo "_qui est  la base de l'analyse vectorielle_" dis-tu, mais a me fait une belle jambe, je ne sais pas ce que c'est et je ne l'utiliserai donc jamais.




> La succession des teintes sur le cercle chromatique est indpendante du sens de rotation.


donc tu admets qu'il puisse y avoir un autre sens que le sacro-saint sens trigo, a tombe bien, un peu rebelle dans l'me il fallait bien que je me dmarque.

Bon, mine de rien, tu nous proposes une solution 



> ```
> 
> ```


que je vois osciller comme le balancier d'une horloge comtoise, un coup  gauche un coup  droite ou plus prcisment un coup en haut un coup en bas, c'est a ? Donc le sens trigo dont tu nous as tant parl, tu l'empruntes un coup dans son sens et un coup dans l'autre ?
Moi y en a pas comprendre, bwana.

Au fait, j'ai ralis tout  l'heure, grce aux jolis *+* rouges que tu as rajouts sur le cercle, qu'au bout du compte, en partant de P(0) (1,0) (ton point de dpart) et en montant  P(PI/2) (mon point de dpart), ben je parcours le cercle dans ton sens ador !
Et a, personne ne l'avait vu,  ::mouarf:: 

Bref, mettons tout le monde d'accord, chacun choisira la manire qu'il prfre :


```

```

Pour dmarrer  3 h comme wiwaxia, il suffit de faire RPhaseShift := 0; et voil.

----------


## wiwaxia

> En quoi a drange quelqu'un, si ce n'est ceux qui se cramponnent  leur sens trigo "qui est  la base de l'analyse vectorielle" dis-tu, mais a me fait une belle jambe, je ne sais pas ce que c'est et je ne l'utiliserai donc jamais.
> 
> _W: La succession des teintes sur le cercle chromatique est indpendante du sens de rotation._
> donc tu admets qu'il puisse y avoir un autre sens que le sacro-saint sens trigo, a tombe bien, un peu rebelle dans l'me il fallait bien que je me dmarque.


Tu ne comprends pas: le fait de choisir un sens positif n'a jamais empch l'aiguille d'une boussole ou le rotor d'une machine de tourner dans le sens ngatif !
C'est une question d'orientation de l'espace,  commencer par l'observateur qui regarde le cercle orient, et se situe sur un axe normal au plan du cercle.
Et de l'orientation de ce cercle, dpendent justement les valeurs des angles relatifs  la position des points.

Tu devrais en toute logique te rfrer  un axe (x'x) orient vers la droite (convention commune), et  un second axe (y'y) orient vers le bas. Sinon chaque modification introduite risque de conduire  un nouveau sac de noeuds, et l'on ne tardera pas  entendre les lamentations du programmeur trahi par les mathmatiques:




> Y a pas un prof de math quelque part pour expliquer ? Parce que l, ce "si besoin est" m'a laiss tellement sans voix que j'en poste mon dsarroi.


Les chants du dsespoir sont les chants les plus beaux  ::D: .

----------


## Jipt

> Tu devrais en toute logique te rfrer  un axe (x'x) orient vers la droite (convention commune), et  un second axe (y'y) orient vers le bas.


Il me semble pourtant que c'est ce que je fais quand je dis que le point thorique du parcours commence  3 h et que je "monte"  12 h pour dmarrer le parcours effectif. Mais peut-tre que j'utilise des mots trop terre  terre ?

+++
Sinon, l'autre chose qui me turlupinait se situe l, o l'on peut voir une sortie console avec des colonnes impressionnantes de nombres :



> Une autre version de la mme fonction linaire par morceaux:
> 
> Elle doit aussi bien fonctionner sur les domaines [0 ; 2*Pi] et [-Pi ; Pi]; j'ai fait un test sur les *valeurs relles*:
> 
> Pice jointe 476435


[si vous voyez crit "pice jointe blabla", vous m'en voyez navr : en mode prvisualisation j'ai l'image ! cliquez sur le lien pour la voir]

et j'aurais aim une explication sur ces "valeurs *relles*" qui sont pour moi juste des valeurs *entires* compltes par ".00000".

Ou j'ai fait une confusion avec ton Pascal qui parle de Reel (on le voit bien dans tes codes) quand le mien utilise Real et donc pas de risque de confondre, ou je ne sais pas, d'o cette petite demande de prcision.

+++ 
Et  propos de la *fonction linaire par morceaux* :

tu en as sorti une autre version il y a qq jours quand de mon ct je travaillais aussi l-dessus, et je viens enfin d'aboutir, aprs tous ces rebondissements.

Je remets ta version, qui a besoin d'environ 150-160 msec sur ma machine :


```

```

et la mienne, qui s'excute en environ 110 msec (Xm c'est le pointeur du balayage horizontal de la matrice, La c'est la largeur de la matrice):


```

```

EDIT : pas compris  quoi servait cette boucle FOR K ... en bas dans ce contexte, alors je l'ai vire et ma foi, a fonctionne tout aussi bien :


```

```

et aprs tests, je l'ai vire aussi au niveau de l'utilisation avec F1..4 :


```

```

Je ne mets pas d'image, c'est strictement la mme que la tienne -- enfin,  l'il, parce que mon outil de comparaison des bmp's me remonte a, comme diffrences :



Les zones en couleur matrialisent les endroits o les pixels sont diffrents, et donc, une analyse rapide du coin suprieur droit de la premire zone verte (quand le vert "monte" de 0  255 pour devenir jaune avec le rouge) montre un pixel  0,25*5*,0 dans mon fichier et  0,25*4*,0 pour le tien,  ::aie:: 
Va falloir que tu revois ta copie,  ::P: 
Ou a peut rester comme a.

----------


## wiwaxia

> *W*: Tu devrais en toute logique te rfrer  un axe (x'x) orient vers la droite (convention commune), et  un second axe (y'y) orient vers le bas.
> 			
> 		
> 
> Il me semble pourtant que c'est ce que je fais quand je dis que le point thorique du parcours commence  3 h et que je "monte"  12 h pour dmarrer le parcours effectif. Mais peut-tre que j'utilise des mots trop terre  terre ? ...


1) Si tu "montes" au sommet du cadran, c'est que l'ordonne de ta position augmente, donc que l'axe correspondant (y'y) est orient vers le haut. Attention au pige des rfrences implicites !

2) Je sais bien que tu dclares te rendre  la position finale par le chemin le plus court, en passant par celles correspondant  2 heures, 1 heure et zro heure (= 12 heures modulo 12). Cependant le cercle gradu constituant la seule rfrence du mouvement, ta dclaration, prise  la lettre, pourrait indiquer que tu dcris un grand arc (4 heures, 5h, 6h ... 11h, 12h): grave ambigut.

3) On ne saurait reprocher  des termes d'tre trop "terre  terre", mais seulement imprcis; et je crois que la rfrence aux cadrans d'horloge a fait partie du langage d'orientation des pilotes d'avion (mais peut-tre plus actuellement, du fait de l'introduction du matriel informatique). Le sens horlogique ne fait que reproduire le mouvement apparent du Soleil dans l'hmisphre Nord, ce qui est historiquement justifi puisque les premires pendules sont apparues en Europe.




> ... Sinon, l'autre chose qui me turlupinait se situe l, o l'on peut voir une sortie console avec des colonnes impressionnantes de nombres :
> ... / ...
> et j'aurais aim une explication sur ces "valeurs *relles*" qui sont pour moi juste des valeurs *entires* compltes par ".00000".
> 
> Ou j'ai fait une confusion avec ton Pascal qui parle de Reel (on le voit bien dans tes codes) quand le mien utilise Real et donc pas de risque de confondre, ou je ne sais pas, d'o cette petite demande de prcision.


Je voulais montrer la parfaite conformit de la fonction par rapport  ce qu'on en attendait, et le calcul des valeurs au format _Extended_ tait un bon moyen d'y parvenir. Il faudrait que je retrouve le programme.

PS: Je viens de r-afficher le tableau des valeurs relles pour la seconde version de la fonction L.M.; cela demandait une petite modification du texte source, qui m'avait chapp sur le moment. Voil qui est fait:


# Remarque: je remplacerais des deux dernires instructions de cette fonction


```

```

par


```

```

----------


## wiwaxia

titre de curiosit, j'ai cherch (et trouv) une srie de fonctions dont des graphes se rapprochent de celui de la fonction dont on vient de parler, et finissent par se confondre avec lui lorsqu'un paramtre associ tend vers zro.

Les calculs, un peu difficiles, ne sont pas dcrits ici. Voici les graphes des fonctions couleur, correspondant  des valeurs dcroissantes de (h); on retrouve exactement les expressions linaires lorsque (h) est nul.


Le but tait de rechercher la palette de luminance maximale, mais dpourvue de raies trop brillantes au niveau des couleurs secondaires - ce problme a dj t voqu en plusieurs occasions.


Les palettes correspondant aux deux premires valeurs de (h) - 0 et 1 - sont indiscernables; les raies brillantes s'estompent effectivement  partir de (0.05) , mais les couleurs secondaires elles-mmes finissent par disparatre au-del de (0.2), ce qui est  viter.
On ne dispose donc que d'une marge relativement faible.

Note: lire "h" en place de "k" sur la dernire image; ce dtail m'a chapp.

----------


## Jipt

Bonjour,




> 1) Si tu "montes" au sommet du cadran, c'est que l'ordonne de ta position augmente, donc que l'axe correspondant (y'y) est orient vers le haut. Attention au pige des rfrences implicites !


Pas exactement : si je "monte vers 12 h", c'est pour indiquer ma position sur le cadran d'une horloge et ce que je ne comprends pas dans ta rponse, c'est le texte rouge qui s'y trouve, puisque c'est exactement le cas, exemple avec cette image 

o l'on voit bien les signes "-"  gauche et en bas, donc les signes "+" (sauf qu'ils ne sont pas matrialiss) en haut et  droite.




> 2) Je sais bien que tu dclares te rendre  la position finale par le chemin le plus court,


Non, je ne crois pas l'avoir dit, et j'ai ralis hier qu'en fait, pour aller de 12 h  4 h par le sens trigo, a faisait parcourir 2/3 du cercle.
Sauf que dans la vraie vie du processeur il ne parcourt rien, il se contente d'avoir des bits  1 et d'autres  0 en fonction d'instructions qui lui sont donnes, il le fait et basta.
Ce n'est pas comme s'il fallait aller de Nice  Rome en passant par NYC  pieds avec un sac de 50 kg sur le dos !

OK, vu les dcimales, sauf que je ne sais pas ce qui a chang d'un code  l'autre, mis  part la correction mineure que tu as indique et qui ne change rien au rsultat final : dans ton image, au jaune  bloc (abscisse  255), le vert est encore  254.

+++
 titre de curiosit galement, j'avais pos une question, elle est passe  la trappe, donc elle revient, pousse par l'histoire du processeur ci-dessus ; je t'avais rcemment demand pourquoi ne pas crire BEGIN u := u+v; END; plutt que BEGIN w := u+v;  u := w; END; et tu m'avais rpondu que tu n'aimais pas je ne sais plus quoi  propos des registres du proc' et c'est l-dessus que je voulais une prcision.

EDIT : pour la collec', 




Cherchez le vert !

3 images extraites du docu "_Hollywood, la vie rve de Lana Turner_", trs sympa (Arte, mercredi soir) :

----------


## wiwaxia

> ... Pas exactement : si je "monte vers 12 h", c'est pour indiquer ma position sur le cadran d'une horloge et ce que je ne comprends pas dans ta rponse, c'est le texte rouge qui s'y trouve, puisque c'est exactement le cas, exemple avec cette image 
> 
> o l'on voit bien les signes "-"  gauche et en bas, donc les signes "+" (sauf qu'ils ne sont pas matrialiss) en haut et  droite ...


1) Si tu affirmes monter du bord latral droit du cercle (3 h)  son sommet (12h), c'est qu'il y a ascension, progression vers le haut, augmentation de l'altitude: tu te rfres donc  un axe vertical ascendant (y'y), celui du repre (xOy) que tu cites d'ailleurs immdiatement aprs. Or *ce repre ne peut tre maintenu aprs renversement de l'orientation des angles.*


L'adoption du sens horaire exige le renversement de l'un des axes, par exemple celui de (y'y): il y a sinon incompatibilit entre les signes des coordonnes des points et les proprits des fonctions trigonomtriques.
L'argument du ralisme cynique



> ... En quoi a drange quelqu'un, si ce n'est ceux qui se cramponnent  leur sens trigo "_qui est  la base de l'analyse vectorielle_" dis-tu, mais a me fait une belle jambe, je ne sais pas ce que c'est et je ne l'utiliserai donc jamais ...


auquel j'aurais t tent de me ranger par lassitude, ne tient malheureusement pas: l'orientation de l'espace est dj implique dans la fonction _Arctan(y, x)_ (ou l'une des variantes dont on a parl), fonction qui donne _l'angle orient vu par un observateur situ au-dessus du repre direct (xOy) qu'il regarde_.
Pour la notion de repre direct, (re)voir la rgle des trois doigts de la main droite, ou le bonhomme d'Ampre.

Alors de trois choses l'une:
a) Tu maintiens le sens horlogique en te rfrant  une repre indirect; la relation
Angle polaire(x, y) = Arctan(y/x)demeure valide, mais tu ne pourras plus consulter les figures gomtriques prsentes dans tes livres ou sur la Toile, parce qu'il te faudrait les inverser toutes.
b) Tu maintiens le sens horlogique en continuant de te rfrer aux relations habituelles (dsormais fausses) et aux schmas qui leur sont associs: il te faudra introduire des corrections de signe, et tes projets se transformeront en Festival de la Rustine, assortis de crises de dcouragement et de saillies du style



> ...  parce que moi, les thormes alatoires et les quations adaptatives, euh, c'est loin d'tre une science exacte, hein.


c) Tu en reviens  la convention commune (celle du sens trigonomtrique), et tes calculs pourront tre compris (et ventuellement corrigs) par autrui.

Il faut voir plus loin que le bout de son nez, et il n'y a aucune indignit  user du langage commun.
Et si je ne suis pas suffisamment convaincant, tu peux au moins m'accorder le bnfice du doute.




> ... Non, je ne crois pas l'avoir dit, et j'ai ralis hier qu'en fait, pour aller de 12 h  4 h par le sens trigo, a faisait parcourir 2/3 du cercle.
> Sauf que dans la vraie vie du processeur il ne parcourt rien, il se contente d'avoir des bits  1 et d'autres  0 en fonction d'instructions qui lui sont donnes, il le fait et basta.
> Ce n'est pas comme s'il fallait aller de Nice  Rome en passant par NYC  pieds avec un sac de 50 kg sur le dos ! ...


Ce qui est point, c'est l'ambigut de ton langage: se dplacer sur le cadran des positions (4 h)  (12 h), c'est littralement effectuer 2/3 de tour.
L'cart angulaire dont il est question est celui qui spare les positions de deux composantes couleur sur le cercle. Nul n'a jamais dit que le processeur se mettait  tourner ! Tu nous entranes en pleine confusion.




> ... OK, vu les dcimales, sauf que je ne sais pas ce qui a chang d'un code  l'autre, mis  part la correction mineure que tu as indique et qui ne change rien au rsultat final : dans ton image, au jaune  bloc (abscisse  255), le vert est encore  254 ...


J'ai list pour vrification les valeurs relles de la fonction tudie, en court-circuitant tout simplement la dernire instruction


```
Result:= 255 * w
```

la valeur retourne passant ainsi au format _Extended_.
Je n'ai pas compris cette histoire de couleur locale (254, 255 ?). Quel est le point (ou le pixel) concern ?




> ...  titre de curiosit galement, j'avais pos une question, elle est passe  la trappe, donc elle revient, pousse par l'histoire du processeur ci-dessus ; je t'avais rcemment demand pourquoi ne pas crire BEGIN u := u+v; END; plutt que BEGIN w := u+v;  u := w; END; et tu m'avais rpondu que tu n'aimais pas je ne sais plus quoi  propos des registres du proc' et c'est l-dessus que je voulais une prcision ...


L'affection 


```
u:= ...
```

transfre  la variable (u) une nouvelle valeur qu'on ne trouve jusque l en aucun autre endroit du programme, et qui se substitue immdiatement  l'ancienne valeur; on ne dispose d'aucun contrle sur l'opration, et cela me gne.
L'instruction me parat beaucoup moins anodine que dans le cas d'un entier.
Il se peut que ce soit gnralement sans consquence, que certains langages s'y prtent mieux que d'autres. 
Je sais aussi que la majorit des programmeurs prise la concision du code, et se moque perdument de ces considrations byzantines. Je suis moi-mme tent de prendre des raccourcis, et d'crire avec mauvaise conscience


```

```

Je ne vais cependant jamais plus loin - et cela peut paratre excessif.

Je sais cependant:
1) qu'on a toujours insist, au cours de ma formation au langage Pascal, sur l'obligation de consigner dans une variable approprie le  rsultat de toute fonction ou expression simple;
2) que le code le plus concis n'est pas forcment le plus rapide ( ma grande surprise, il y a trois ou quatre ans);
3) que dans certains cas l'accumulation des calculs sans variable intermdiaire conduit au dsastre.

Je m'en tiens donc  la prudence: ne jamais laisser au processeur le soin de grer les rsultats intermdiaires.

----------


## Jipt

> [...] Je m'en tiens donc  la prudence: ne jamais laisser au processeur le soin de grer les rsultats intermdiaires.


De ce que j'en connais des processeurs (et  une poque on les dpannait  l'oscilloscope et aux schmas, on voyait avec nos yeux les cafards noirs  14 ou 16 pattes servant de briques de base pour fabriquer des registres), la mcanique lectronique sait parfaitement rcuprer le contenu d'une adresse mmoire et la passer  l'unit de calcul, puis rcuprer un autre contenu d'une autre adresse mmoire et la passer aussi  l'ALU en lui demandant de faire telle opration sur ces deux donnes, puis le proc va rcuprer le rsultat et le stocker l o le prog lui dit de le mettre. 
Pourquoi pas dans l'une des deux cases prcdemment accdes et maintenant disponibles ? 
L ou ailleurs, pour le proc c'est pareil.

+++



> 1) Si tu affirmes monter du bord latral droit du cercle (3 h)  son sommet (12h), c'est qu'il y a ascension, [...]


STOP ! Tu y vois ascension, je n'y vois que position sur un cercle, pour montrer  un gamin de 5 ans (qui sait quand mme lire une horloge  aiguilles, j'espre) o je me trouve, et c'est tout.




> fonction qui donne l'angle orient vu par un observateur situ au-dessus du repre direct (xOy) qu'il regarde.


Et moi je regarde ce fichu cercle ex-ac-te-ment comme je regarde une horloge : normal (au sens matheux) au centre. C'est pas bien ?




> Ce qui est point, c'est l'ambigut de ton langage: se dplacer sur le cadran des positions (4 h)  (12 h), c'est littralement effectuer 2/3 de tour.


Ce qui n'est pas clair dans le tien, c'est quand on te pose une question simple  rponse oui-non et que tu n'y rponds pas ou alors avec une longue tirade qui m'embrouille plus qu'autre chose. 
La question simple c'tait a :




> ```
> 
> ```
> 
> Tu prfres ?


L, si tu me dis oui, je valide ce code et termin !

Si tu me dis non, je valide celui-ci :


```

```

a serait bien que tu te dcides, car je n'attends plus que a pour terminer un zip que d'autres pourront tester.

Dans un cas comme dans l'autre, il y a un cart de 2/3 de cercle entre le point de dpart rouge et le point vert, et encore 2/3 d'cart entre vert et bleu.
Si on tourne dans l'autre sens il n'y a plus qu'un tiers mais qu'est-ce que a change,  part nous perturber les neurones ?

+++



> Je n'ai pas compris cette histoire de couleur locale (254, 255 ?). Quel est le point (ou le pixel) concern ?


C'est le pixel encadr en orange que j'ai mesur  0,254,0, mais en fait c'est toute la colonne qui est concerne, et je dirais mme plus, c'est toute la zone verte qui commence  la moiti de "l'ascension" du vert qui passe de 0  255 normalement.



Il doit y avoir une blague dans les calculs  partir du milieu de l'ascension, blague qu'on retrouve galement  la descente du rouge sombre qui vire au noir, et pareil pour les 4 autres zones.

+++



> Un livre de Maths de niveau secondaire technique te serait d'un excellent secours: aisment comprhensible, et allant  l'essentiel.
> Il t'viterait de te noyer dans un verre d'eau.

----------


## wiwaxia

> ... Et moi je regarde ce fichu cercle ex-ac-te-ment *comme je regarde une horloge* : normal (au sens matheux) au centre. C'est pas bien ? ...


L'habitude n'est pas une justification: il y a de bonnes et de mauvaises habitudes. Et l'obsession des cadrans d'horloge, qu'aucune des tudes que tu as fates ne justifie, relve de ces dernires.
Tu fais ce que tu veux: je ne peux que te renvoyer  ton excellente bibliothque, et il n'y a pas pire sourd que celui qui ne veut rien comprendre.




> ... Ce qui n'est pas clair dans le tien, c'est quand on te pose une question simple  rponse oui-non et que tu n'y rponds pas ou alors avec une longue tirade qui m'embrouille plus qu'autre chose  ...


Tu exiges des justifications dans un domaine difficile, alors que tu refuses une convention d'usage: il ne faut pas t'tonner que les rponses ne soient pas videntes. Je ne t'ai pourtant rien dit qui ne se trouve dans tes livres.




> ... La question simple c'tait a :
> 
> 
> 
> ```
> 
> ```
> 
> 
> ...


Essaie l'un et l'autre bloc d'instructions: je ne saurais prdire le rsultat, faute de connatre l'algorithme complet.
Je sais seulement que les teintes (R, V, B) se succderont dans l'ordre oppos. 




> ... C'est le pixel encadr en orange que j'ai mesur  0,254,0, mais en fait c'est toute la colonne qui est concerne, et je dirais mme plus, c'est toute la zone verte qui commence  la moiti de "l'ascension" du vert qui passe de 0  255 normalement.
> 
> 
> 
> Il doit y avoir une blague dans les calculs  partir du milieu de l'ascension, blague qu'on retrouve galement  la descente du rouge sombre qui vire au noir, et pareil pour les 4 autres zones ...


C'est ton algorithme, pas le mien. Et le comportement de ce dernier est trs clair.
Essaie d'afficher comme moi les valeurs relles de ta fonction: on verra bien ce qui se passe.

----------


## Jipt

> et il n'y a pas pire sourd que celui qui ne veut rien comprendre.


Ce n'est pas faute d'avoir essay, mais quand il manque des lments je peux toujours lever le doigt, personne ne m'entend,  ::aie:: 
En plus, tu dformes le proverbe :
il n'y a pas pire sourd que celui qui ne veut rien *entendre*, nuance !
Comprendre c'est autre chose.

Quand, comme je l'ai dit, je lis dans un des bouquins que "_Le coefficient alpha que l'on peut supposer positif (en changeant si besoin est alpha en alpha + ou - PI)_", c'est ce "*peut supposer*" qui me rend perplexe : si l'auteur avait crit "*que l'on doit utiliser*", j'aurais avanc.
L je lis, je tourne dans tous les sens, j'entends et ne comprends pas.




> Je sais seulement que les teintes (R, V, B) se succderont dans l'ordre oppos.


Ben non, elles se succdent de la mme manire -- sinon je n'aurais pas post ce truc-l : je me suis battu comme un beau diable pour avoir rouge-vert-bleu bien affich, quel intrt aurais-je eu  pondre un algo qui ne les affiche pas ainsi ?

C'est bien ce que je dis : je ne suis pas lu, ou pas bien, ou pas compris, alors que je me dcarcasse  mettre des copies d'cran. Mais dans ce cas, ce n'est pas la peine, a serait deux fois la mme.

Et c'est curieux que tu ne reconnaisses pas tes sources, car c'est pourtant de a que je suis parti :


```

```

Sauf que j'ai trs vite t perturb par le fait que pour parcourir dans le sens trigo (la flche, le "+"), il faut utiliser le signe "-", un peu comme sur l'Estafette, qui a la mme bote de vitesse que toutes les bagnoles, mais monte  l'envers : la 1re est en bas, a surprend

Mais bon, on y est arriv, j'ai ma bote noire, aprs tout, quand Mme Michu va faire ses courses, avec sa 'tit'auto, elle ne se prend pas la tte pour savoir dans quel sens tourne le vilebrequin dans la culasse moteur, le tout c'est que quand elle passe la 1re a avance !

+++ 



> Essaie d'afficher comme moi les valeurs relles de ta fonction: on verra bien ce qui se passe.


J'ai affich les tiennes avec la maintenant classique ligne de log  la fin de 

```

```

, a donne a (juste le dbut, et dit) :


```

```

et du coup tout le vert est dcal  partir de Xm  129, on devrait ici (ligne 11) tre  r: 255 g: 255 

Et pareil pour les morceaux suivants.

En ce qui concerne ma manire de faire, j'ai aussi des lignes en double, elles se situent plus loin, par exemple en ligne 14, doublon de la 11  


```

```

Et a a l'air trs compliqu de faire sauter ces lignes en double

Voil mon truc, 


```

```

----------


## Jipt

> Et a a l'air trs compliqu de faire sauter ces lignes en double


Bah, pas tant que a, en fait : juste ajouter une variable qui va permettre d'avancer autrement dans le tableau des couleurs :



```

```

le rsultat, ultra dit, donne a (j'ai rajout des signes + et - pour se reprer dans ce qui se passe) :


```

```

Donc les 6 dernires lignes sont  supprimer, du coup l'image finale passe de 1536 colonnes  1530 (le 1er morceau reste  256 pixels [0  255], et les 5 autres passent  255 pixels car le dernier d'un morceau est le premier du morceau suivant), et a fonctionne tout aussi bien, et sans aucun doublon.

Par contre, je ne sais pas ce que a vaut
(mais a va me faire intensment rflchir  des anciens projets bass sur des images de 1536 px de large.)

----------


## Jipt

Bonjour,

la nuit portant conseil, je peux me sparer de la variable intermdiaire ainsi :


```

```

et aprs avoir ajout 1 ligne au dbut du balayage :


```

```

a donne a :


```

```

Les plus observateurs noteront que les 6 dernires lignes sont identiques et invitables,  moins de raboter le bitmap une fois sa gnration termine.

a serait facile mais je ne sais pas trop s'il faut faire ainsi, dans la mesure o, lorsque je travaille sur des maquettes, j'utilise souvent des valeurs bien divisibles par 2 pour les largeurs d'image et l, on se retrouverait avec 1530 qui, une fois divis par 2, donne 765 et on ne va gure plus loin.
Alors qu'avec 1536, / 2 = 768 / 2 = 384 / 2 = 192 / 2 = 96 / 2 = 48 etc., a en fait des essais possibles.

Par 3 c'est bien aussi :
1530 / 3 = 510 / 3 = 170 / 3 =  ::aie:: 
1536 / 3 = 512 / 3 =  ::aie:: , ok ok, mais 
1530 / 3 = 510 / 2 = 255  ::aie:: 
1536 / 3 = 512 / 2 = 256 / 2 = 128 / 2 = 64 / 2 = 32, 16, 8, 4, 2, 1 c'est + sympa  ::ccool:: 

Alors en fonction de ses besoins propres, chacun adaptera.

Je crois qu'on a fait le tour.
Bon dimanche, et si pas de bug de dernire minute, le zip en fin de journe ?
 ::coucou::

----------


## Jipt

> Bon dimanche, et si pas de bug de dernire minute, le zip en fin de journe ?


Voil donc le zip, qu'il suffira de tlcharger, cliquer-droit puis "extraire ici", et a gnrera le dossier qui va bien : palettes_rgb_ryb.zip

Quelques notes et remarques (il y en a encore un tout petit peu au dbut de l'unit principale) :

- La partie droite de la fentre a une particularit, c'est qu'en cas de resize elle s'adapte en faisant en sorte que sa largeur centrale utile (moins deux marges fixes de 12 et 12 ou 13 pixels) soit divisible par 24, une vieille histoire que je n'ai pas eu le courage de remettre  plat (c'est une maquette de travail et d'tude, pas le programme_de_la_mort_qui_tue  diffuser au monde entier).

- Les gens sous Windows-Delphi devront adapter quelques bricoles, genre renommer le .lfm en .dfm et l'diter avec le Bloc-notes car on y trouve dedans, au dbut, la version de Lazarus et je ne sais pas du tout comment se comporte une version actuelle de Delphi vis--vis de choses incongrues.

- Il vous faudra galement adapter la section uses des units, elle inclut des modules Lazarus (commenant par "LCL"), en gnral il devrait suffire de mettre Windows  la place, par contre, c'est pour le .lpr,  renommer en .dpr, que je ne sais pas trop comment a va se passer. Vous verrez bien, hein, vous tes des grands garons !

- Au dbut des units vous trouverez {$mode objfpc}{$H+},  supprimer, sauf pour ceux qui sont sous Lazarus.

- Si vous avez du scintillement, n'oubliez pas DoubleBuffered := True; dans le formCreate, je ne l'ai pas mis car ce n'est pas ncessaire sous Linux.


- Les gens sous Linux-Lazarus seront privilgis, ils ouvrent le .lpi, ils appuient sur F9 et ils ont une belle image (protocole test et valid). Ils pourront alors jouer avec les cases  cocher, et pi val !

Merci de nous tenir au courant.

Et encore deux images RYB, pour la route (dommage qu'on n'ait pas la 'zique) :

----------


## wiwaxia

Voici une fonction de couleur dpendant d'un paramtre, et conduisant  une rpartition quilibre des couleurs primaires et secondaires, comme le montre la srie des palettes suivantes:


La fonction est paire, de priode gale  6 et dfinie sur [-3 ; +3]: ses variations sont donnes sur sa partie descendante [1 ; 2] par l'expression:
w = 2 - v + (v - 1)(2 - v)(1/2)/(1 + h*(v - 1)2)Deux composantes couleur prsentent par rapport  la premire un dcalage d'un tiers de priode, soit 2 units.


```

```

La matrice de la palette rectangulaire est code par les instructions suivantes:


```

```

celle du cercle chromatique par:


```

```

Aucune restriction n'intervient sur le choix des dimensions de l'image.

D'autres fonctions, conduisant  des nuances apparentes, sont bien sr envisageables.

De tout ce qui prcde, tu fais ce que tu veux.

----------


## Jipt

> Voici une fonction de couleur dpendant d'un paramtre, et conduisant  une rpartition quilibre des couleurs primaires et secondaires, comme le montre la srie des palettes suivantes:


Oui, c'est trs joli et tu as d beaucoup te prendre la tte, sans compter le camion d'aspirine gar devant la maison, la seule chose qui m'ennuie, c'est qu'en face du rouge je vois un cyan quand j'aurais pu esprer un vert.

Bah, les calculs mathmatiques ne sont pas raccord avec les rendus esthtiques, c'est bien connu.
Tiens, regarde, le hasard m'a envoy a, tout  l'heure :






> De tout ce qui prcde, tu fais ce que tu veux.


Merci, cependant, je suggre qu'on laisse un peu faire les autres, et voir ce qu'ils proposent,  ::mouarf:: 

Moi je suis en train de ranger la pagaille sur mon bureau et dans les sous-dossiers affrents aux projets et maquettes utiliss pendant ces 55 jours (non, pas de Pkin  :8-): )

----------


## anapurna

salut 

en face du rouge tu ne peut esprer qu'une couleur compos et pas une couleur primaire 
du simple fait que celle-ci comme tu le rappel si bien sont plac  120 l'une de l'autre sur le cercle

----------


## Jipt

> en face du rouge tu ne peux esprer qu'une couleur compose et pas une couleur primaire 
> du simple fait que celles-ci comme tu le rappelles si bien sont places  120 l'une de l'autre sur le cercle


En mathmatiques, oui.

Concernant l'esthtique, il n'y a aucune limitation, aucune restriction, ce qui compte c'est ce qu'on ressent.
Allez, 2 images presque au hasard, issues de ma collec', section "cercles et dgrads RYB" :

 

Et depuis le dbut c'est l'esthtique qui m'intresse. Si j'ai fait un dtour par le cercle RGB, c'tait pour admirer le paysage, le guide touristique en parlait.
Maintenant, je retourne  mes moutons et  mes proccupations, comme ce cercle 24 teintes en cours d'tude :


Et, non, il n'y a pas toutes les possibilits 0..255 pour chaque primaire, loin de l, je me suis concentr sur l'esthtique,  ::P:

----------


## wiwaxia

La 3me position ( 120 des deux prcdentes) est loin de correspondre au bleu pur !


L'cart atteint 40  ... et il en est de mme pour plusieurs autres couples de couleurs.

----------


## Jipt

> La 3me position ( 120 des deux prcdentes) est loin de correspondre au bleu pur !


On est bien d'accord, et c'est ce que j'ai crit il y a quelques jours (suis-je lu ? Compris ?  ::P: ) : aprs avoir bien not qu'il tait impossible d'avoir des couleurs pures d'un bout  l'autre de leur chelle *ET* que a soit joli, mon choix est fait, je prfre la beaut chaude des rendus ajusts  la main  la beaut froide des quations.

Ah, on me signale deux dfauts (que je n'ai jamais constats), et un que j'ai trouv tout seul, alors notez a et patchez le fichier de l'unit :

Dans ComputeOptimalSizes;, tout en bas :


```

```

 commenter sinon impossible de passer en plein cran.  ::aie:: 

Et Jrme du forum Lazarus me signale dans la sous-procdure MakeCircle de la procdure ComputeCircle :


```

```

et


```

```

Et une info Lazarus : 


> Pour Windows suffit juste de passer le pixelformat des TBitmap  pf32bit ou utiliser des TRGBTriple comme tu l'as suggr.

----------


## wiwaxia

> On est bien d'accord, et c'est ce que j'ai crit il y a quelques jours (suis-je lu ? Compris ? ) : aprs avoir bien not qu'il tait impossible d'avoir des couleurs pures d'un bout  l'autre de leur chelle *ET* que a soit joli, mon choix est fait, je prfre la beaut chaude des rendus ajusts  la main  la beaut froide des quations ...


S'il y un domaine justement o les calculs mathmatiques apparaissent chaleureux et gratifiants, c'est bien celui de la synthse des images et des couleurs.

Une solution consiste ici  reprendre les variations de chaque composante couleur sur le domaine [0 ; 6]; le code est plus long, en raison de la perte de symtrie, mais la fin de l'algorithme est tonnamment rapide.
L'intervention sur les parties inclines d'un terme parabolique Q(h, i, j, s) = h*(s - i)*(j - s) a deux effets bnfiques:
a) r-hausser les luminances l o elles sont insuffisantes, notamment au niveau du cyan et de l'orange mdian;
b) estomper les raies anormalement brillantes en rduisant (et  la limite en annulant) les ruptures de pente au voisinage de la valeur maximale (1).

*(h = 1.000)*

Il y a dsormais correspondance rigoureuse des couleurs diamtralement opposes: rouge - vert, jaune - violet, bleu - orange.

On retrouve les diverses teintes observes dans le cercle chromatique de *Jipt*,  l'exception de celle du cyan  son clat maximal:




```

```



```

```

----------


## Jipt

Salut bonjour,

Ce matin je pensais faire autre chose et voil que je dcouvre ton code, avec de jolies images, qui donnent envie de tester, mais

*1-) Concernant les blocs de code :*
Mais tu as oubli de nous donner les fonctions Arg2XY et Norme1,  ::aie:: 

Et une explication,  propos de I3sPi, que j'aurais tendance  traduire (je commence  parler le wwx) _inverse de 3 sur Pi_, sauf que je lis a :


```
CONST I3sPi = 3 / Pi;
```

Si je n'avais pas vu cette dfinition, j'en aurais crit une ainsi :


```
CONST I3sPi = Pi / 3;
```

Et dans un cas comme dans l'autre, le "I" dans le nom ne sert  rien  part  embrouiller :
Soit tu as besoin de 


```
CONST 3sPi = 3 / Pi;
```

soit de 


```
CONST Pis3 = Pi / 3;
```

Merci d'tre clair et prcis sur ce coup-l, c'est dj suffisamment compliqu comme a.


Une dernire question : pourquoi une constante Kh = 1.000 ? Pourquoi ne pas avoir mis directement dans le code Q(1, 2, 3, t) par ex. (et 0.25 l o tu utilises Kh/4) ?

*2-) Concernant le texte et les rendus :*
Vu la quantit dmente de jaune avec h = 1.000, je vais me rabattre sur h = 0.000 qui,  mes yeux, a une rpartition plus harmonieuse.
Mais ce h = ..., o faut-il l'utiliser ? Dans la ligne qui prcde les dgrads, l ? : 



> L'intervention sur les parties inclines d'un terme parabolique Q(h, i, j, s) = h*(s - i)*(j - s) a deux effets bnfiques:


Si oui, alors avec h = 0 on gagne Q(0,x,y,z) = 0, pas sr que a soit ce que tu avais en tte
Erreur de nommage dans la seconde partie de l'galit ?

Quant au mot "_parabolique_", je n'aurais jamais eu l'ide d'aller le chercher (et d'ailleurs, petit apart : mis  part l'lvation au carr pour mesurer une surface et au cube pour un volume, je suis parfaitement incapable d'imaginer une quelconque mise en uvre de formules mathmatiques dans la vraie vie : par exemple, autant certains sauront avec prcision dterminer l'quation qui va bien pour envoyer dans l'espace encore plus de cochonneries [comme s'il n'y en avait pas dj suffisamment -- mais ceci est un autre dbat]  un endroit prcis, autant je suis  des annes-lumire de ces manires de penser).


Dans l'attente de tes prcisions, je vais commencer la mise en place du reste.

----------


## Jipt

En attendant tes prcisions, parlons d'autre chose, qui concerne la prsentation de tes codes et mon immense difficult  les apprhender.

En fait c'est juste une histoire de typographie et de composition du texte dans la page, terriblement perturbante, qu'on en juge avec ces images rduites, d'abord de ton code brut et sans retouches de la function PixelRJB :

o l'on voit donc 3 grands blocs et un petitou en bas, et si le regard porte au milieu, sur le second bloc, on voit qu'il commence par Px[1]:= Round(m * w);, tout comme le bloc suivant qui commence de la mme manire y a que l'index qui change *SAUF QUE NON*, ce que je viens d'crire est tout faux, il faut voir a autrement :



Alors oui, ces grands blancs que j'ai rajouts sont assez moches, un code plus long s'accommoderait bien de sparations mieux marques, genre


```

```

Ce qui donne a, quand mme plus sympathique pour comprendre instantanment qui fait quoi :


C'est tout. 
a dcoule de mes tudes (toutes personnelles mais oh combien passionnantes et utiles au quotidien) sur la typographie, la mise en page, la lecture du document (au sens large), toutes choses en gnral inconnues du lecteur mais qui impactent considrablement sa manire d'apprhender un texte et donc, de le comprendre.
Et ce n'est pas parce que c'est du code que ce n'est pas du texte.

EDIT : Et sinon, question code, justement, j'arrive  a avec la matrice rectangulaire :


J'attends tes rponses  mes questions du post prcdent pour voir comment j'intgre ta procdure circulaire.

----------


## wiwaxia

Re-bonjour,  ::D: 

Je tche de rpondre  toutes tes nombreuses questions.




> ... 1-) Concernant les blocs de code :[/B]
> Mais tu as oubli de nous donner les fonctions Arg2XY et Norme1,  ...


Cela a donn lieu  quelques commentaires ou controverses (il y a une dizaine de pages  ::aie:: ), et je pensais que tu disposais d'une fonction quivalente. 
Il n'y a aucun inconvnient  les reproduire ici:


```

```

La fonction _Arg2XY(x, y)_ donne la valeur de l'angle polaire (*ux*, *OM*) en fonction des composantes cartsiennes (x, y) du vecteur (*OM*), et retourne un rsultat compris compris  entre 0 et (2*Pi).
Il existe d'ailleurs une autre version (_Arg1XY(x, y)_) de cette fonction, qui renvoie un rsultat allant de (-Pi)  (+Pi); je crois mme qu'elle aurait t plus approprie dans l'un des programmes concerns, mais j'ai eu la flemme de vrifier.



```

```




> ... Et une explication,  propos de I3sPi, que j'aurais tendance  traduire (je commence  parler le wwx) _inverse de 3 sur Pi_, sauf que je lis a :
> 
> 
> ```
> CONST I3sPi = 3 / Pi;
> ```
> 
> Si je n'avais pas vu cette dfinition, j'en aurais crit une ainsi :
> 
> ...


Tu as raison, je suis quelque peu dpass par les versions successives des programmes, que j'ai t amen  rdiger.
J'ai d confondre la dclaration 


```
CONST K3sPi = 3 / Pi;  // "Konstante 3 sur Pi"
```

prsente dans une ancienne version, qui se prte facilement  une vrification des calculs, avec une plus rcente.


```
CONST IPis3 = 3 / Pi
```

Je te signale que la dclaration


```
CONST 3sPi = 3 / Pi;
```

n'est pas valide: l'identificateur doit commencer par une lettre - ce serait trop facile !  ::D: 




> ... Une dernire question : pourquoi une constante Kh = 1.000 ? Pourquoi ne pas avoir mis directement dans le code Q(1, 2, 3, t) par ex. (et 0.25 l o tu utilises Kh/4) ? ...


Parce que cette donne intervient 6 fois, et qu'elle permet une modification globale, rapide et claire de la distribution des couleurs.
La souplesse du programme, c'est justement de conduire  un ensemble de palettes, et de permettre un choix personnel; il ne s'agit nullement d'un exercice de virtuosit algorithmique, qui serait sans intrt.
Je posterai les graphes des variations des 3 composantes, qui sont prts.




> ... *2-) Concernant le texte et les rendus :*
> Vu la quantit dmente de jaune avec h = 1.000, je vais me rabattre sur h = 0.000 qui,  mes yeux, a une rpartition plus harmonieuse.
> Mais ce h = ..., o faut-il l'utiliser ? Dans la ligne qui prcde les dgrads, l ? :


L'extension du jaune est lie  celle de l'orange; on peut y remdier partiellement par une correction locale, qui est envisageable.
Ton choix me surprend: la premire palette (h = 0) est pour moi la plus dcevante; n'es-tu pas choqu par la prsence des deux raies brillantes (jaune et verte), et celle du gris sombre situ juste eu peu plus loin ? Le choix m'aurait paru possible au-del de 0.7 seulement ... De plus les teintes de ton cercle chromatique sont trs proches de celle de la dernire palette (h = 1): tes prfrences ne sont-elles pas contradictoires ?




> ... Quant au mot "_parabolique_", je n'aurais jamais eu l'ide d'aller le chercher (et d'ailleurs, petit apart ...


Dans un repre cartsien (xOy), toute parabole d'axe vertical admet pour quation une expression de la forme:
y = a*x2 + b*x + c .Par extension, on appelle parabolique toute fonction reprsente par un trinme du second degr.
Le polynme propos appartient  cette catgorie:
Q(h, i, j, s) = h*(s - i)*(j - s) = h*(-s2 + (i + j)*s - i*j) = -h**s2* + h*(i + j)**s* - h*i*j
C'est tout simplement le polynme qui s'annule pour (s=i) ou (s=j), et prsente une valeur maximale au milieu de l'intervalle (s = (i + j)/2):
Q(h, i, j, (i+j)/2) = h*(j - i)2/4 .
Il s'agit de la correction typique et simple que l'on peut introduire dans une formule, pour amliorer le rsultat.



```

```

----------


## Jipt

> Cela a donn lieu  quelques commentaires ou controverses (il y a une dizaine de pages ), et je pensais que tu disposais d'une fonction quivalente.


J'en ai une, mais elle accepte plus de paramtres et se nomme norme1_2.





> Je te signale que la dclaration
> 
> 
> ```
> CONST 3sPi = 3 / Pi;
> ```
> 
> n'est pas valide: l'identificateur doit commencer par une lettre - ce serait trop facile !


Exact, mais au saut du lit ceci peut expliquer cela,  ::langue:: 





> Parce que cette donne intervient 6 fois, et qu'elle permet une modification globale, rapide et claire de la distribution des couleurs.


Il me semblait juste 4 et surtout, je n'avais pas fait le rapprochement entre *h* d'un ct et *Kh* de l'autre.





> Ton choix me surprend: la premire palette (h = 0) est pour moi la plus dcevante; n'es-tu pas choqu par la prsence des deux raies brillantes (jaune et verte), et celle du gris sombre situ juste eu peu plus loin ?


Les raies brillantes on a dit il y a peu qu'elles taient invitables, donc je "prends sur moi", par contre la partie grise je ne l'ai pas vue tout de suite, du coup je passe  0.4


 moi.
Voil la fonction pour le cercle dans toute sa splendeur,  ::aie:: 


Au premier coup d'il on voit tout de suite que le centre du cercle s'installe  la moiti du rayon, va savoir pourquoi
Et comme je suis curieux, j'ai tent  l'arrache Xc:= La1;//  / 2; mais si je pars alors du centre, je ne fais pas tout le tour du cercle, idem en supprimant l'autre division par 2.

Et comme je n'ai plus les yeux en face des trous, je te laisse rflchir  a.
 ::coucou::

----------


## wiwaxia

> En attendant tes prcisions, parlons d'autre chose, qui concerne la prsentation de tes codes et mon immense difficult  les apprhender.
> 
> En fait c'est juste une histoire de typographie et de composition du texte dans la page, terriblement perturbante, qu'on en juge avec ces images rduites, d'abord de ton code brut et sans retouches de la function PixelRJB :
> ... / ...
> C'est tout. 
> a dcoule de mes tudes (toutes personnelles mais oh combien passionnantes et utiles au quotidien) sur la typographie, la mise en page, la lecture du document (au sens large), toutes choses en gnral inconnues du lecteur mais qui impactent considrablement sa manire d'apprhender un texte et donc, de le comprendre.
> Et ce n'est pas parce que c'est du code que ce n'est pas du texte ...


Tu as tout  fait raison. J'tais press d'en finir, et soucieux de tout voir afin de ne pas commettre de bourde (six boolens  coder, et six intervalles !).
D'o la prsence d'un bloc comportant manifestement trois parties indpendantes, et dbordant de la page d'cran: faon de procder bien peu conforme  l'idal pascalien. Je mettrai cela en ordre ds que possible.




> ... Les raies brillantes *on a dit il y a peu qu'elles taient invitables*, donc je "prends sur moi", par contre la partie grise je ne l'ai pas vue tout de suite, du coup je passe  0.4 ...


L, tu exagres ! ::furax:: 
Les raies brillantes sont tout  fait vitables,
leur cause est avre (la discontinuit de pente des fonctions de couleur),
on en parl depuis le dbut de ces changes, et
j'ai donn trois algorithmes permettant de les rduire *images  l'appui*:

1) Le plus rcent, le plus simple et le plus efficace 
*#285*

2) *#276* Fonctions paramtrables se rapprochant de la fonction linaire par morceaux (code cependant un peu lourd).

3) *#230* Palettes donnes par les fonctions F1, F2, F3, F4, et compares  la fonction LM.

4) *#113* Premires vocations des raies brillantes ...

Je prsenterai dans le dtail les fonctions actuellement en cause, et conduisant  la palette RJB.
Les palettes ont t postes sur *#291* la nuit dernire, soit *5 messages plus tt !* Pour parler avec toi d'un sujet donn, il faut s'accrocher ferme !

----------


## Jipt

> Pour parler avec toi d'un sujet donn, il faut s'accrocher ferme !


Parce que a touche  tout un tas d'aspects.

+++
Et pour le rendu du cercle, pas d'ide ?

----------


## Jipt

> 1) Le plus rcent, le plus simple et le plus efficace 
> *#285*


Euh non, le plus rcent c'est celui-ci :



> Les palettes ont t postes sur *#291* la nuit dernire


Pratiquement le mme que l'autre, d'ailleurs, juste la gestion de la manire de rcuprer les donnes qui changent.

Donc ces deux algos incorporent une manire bizarre de grer un truc, qui fait un gros changement quand j'inverse pour le remettre d'querre :


```
IF (Xc<Yc) THEN Rmax:= Xc ELSE Rmax:= Yc;
```

Dit en franais : si Xc est plus petit que Yc alors la valeur max est Xc sinon c'est Yc. Et a ne choque personne ? 
Donc si j'inverse avec IF (Xc>Yc) THEN Rmax:= Xc ELSE Rmax:= Yc; et que ce qu'on lit tombe maintenant sous le sens, alors je parcours tout le cercle, c'est mieux, et les teintes sont l :


compar au morceau minable de ce matin, bien que les teintes soient l galement :


Mais dans un cas comme dans l'autre, je ne comprends pas pourquoi le centre du cercle dessin s'installe  la moiti du rayon,
 ::koi:: 
Alors je supprime les divisions par 2 pour Xc et Yc au dbut de la proc et du coup j'arrive  a :


On dirait que le parcours est correct, mais c'est le rendu des teintes qui est en vrac.
a me dpasse

----------


## wiwaxia

> *W*: 1) Le plus rcent, le plus simple et le plus efficace
> #285
> 
> 
> Euh non, le plus rcent c'est celui-ci :
> 
> 
> 
> 
> *W*: Les palettes ont t postes sur #291 la nuit dernire


Je ne parlais pas du nouveau type de palette (RJB), que je traitais pour la premire fois d'une manire complte, et que n'ai pas fini de prsenter. 




> ... Pratiquement le mme que l'autre, d'ailleurs, juste la gestion de la manire de rcuprer les donnes qui changent ...


Les algorithmes sont apparents, mais il intervient dans ce cas trois fonctions couleur au lieu d'une seule.




> ... Donc ces deux algos incorporent une manire bizarre de grer un truc, qui fait un gros changement quand j'inverse pour le remettre d'querre :
> 
> 
> ```
> IF (Xc<Yc) THEN Rmax:= Xc ELSE Rmax:= Yc;
> ```
> 
> Dit en franais : si Xc est plus petit que Yc alors la valeur max est Xc sinon c'est Yc. Et a ne choque personne ?


(Rmax) reprsente le rayon du cercle chromatique dans l'image rectangulaire, et il est gal  la plus petite des coordonnes du centre afin qu'il n'y ait pas de dbordement.
Exemple: La = 500; Ha = 200; d'o:
Xc = (La - 1)/2 = 249.5 ; Yc = (Ha - 1)/2 = 99.5 ; *Rmax = Min(Xc, Yc)* = 99.5 .





> ... Donc si j'inverse avec IF *(Xc>Yc)* THEN Rmax:= Xc ELSE Rmax:= Yc; ...
> Mais dans un cas comme dans l'autre, je ne comprends pas pourquoi le centre du cercle dessin s'installe  la moiti du rayon,
> 
> Alors je supprime les divisions par 2 pour Xc et Yc au dbut de la proc et du coup j'arrive  a :
> ...
> On dirait que le parcours est correct, mais c'est le rendu des teintes qui est en vrac.
> a me dpasse


Si tu improvises n'importe quoi, le code devient incohrent, et il n'y a plus de discussion possible.

L'inversion de l'instruction conduirait au rsultat suivant: *Rmax = Max(Xc, Yc)* = Max(249.5, 99.5) = 249.5 .

----------


## Jipt

Bonjour,




> (Rmax) reprsente le rayon du []


Oui, a je l'avais compris, mais quelle ide aussi de nommer cette variable Rmax alors qu'elle cherche un *min* !

Bref, je l'ai renomme et j'ai modifi la ligne ainsi, c'est quand mme plus cool : rayonC := min(Xc, Yc);, rayon"C" parce que j'ai dj un rayon tout court globalement dfini dans le prog, qui commence  ressembler  a :






> Si tu improvises n'importe quoi, le code devient incohrent, et il n'y a plus de discussion possible.


Quand je suis face  des noms qui ne reprsentent pas ce qu'ils font, je considre que je baigne dj dans le n'importe quoi, alors un peu plus un peu moins, exemple avec ta fonction Norme1, trs perturbante dans le sens o j'en ai dj une que j'ai appele "Normalize" (qui "clampe"  min 0 max 255 les datas qu'on lui passe), et que la tienne renvoie en fait la racine carre de la somme des deux variables passes et leves au carr, l'*hypotnuse*, quoi ! Alors _Norme1_, excuse-moi mais celui qui lit a est passablement drout.

Bref, j'ai tout remis comme  l'origine (sauf le renommage et certaines simplifications), et j'ai activ mon systme d'enregistrement du fichier, excution et l, stupfaction, ton bitmap est rond et beau (mis  part une inversion haut-bas sans doute lie  l'opposition Windows-Linux concernant la manire de grer les bitmaps) :


Conclusion, souci li  mon systme d'affichage qui serait  repenser, et je me retrouve avec cette norme masse jaune, donc Kh  0.0 (qui ne la fait pas diminuer beaucoup).

Me demande s'il faut que je me prenne la tte avec CalcMat_Im_C puisque j'en ai une autre qui fait bien le boulot, avec dgrads blanc->couleur->noir et redimensionnement automatique, et l on a Kh  0.4 (image rduite au tiers) :

----------


## wiwaxia

# Suite du *#291*, o ont t donnes les palettes et les codes correspondants.

Le problme parat au dpart plus encombrant, parce que chaque composante couleur suit une loi de variation qui lui est propre.
Mais une fois cette difficult passe, l'initialisation de la matrice du corps de l'image s'en trouve grandement facilite, qu'il s'agisse de la palette unidimensionnelle ou du cercle chromatique.

Voici les graphes de variation des trois composantes sur le domaine [0 ; 6] correspondant  une priode, le paramtre ajustable (h) prenant successivement les valeurs (0, 0.5 et 1.0):

*h = 0.000*  
*h = 0.500*  *
h = 1.000* 
On observe pour les trois composantes, une volution progressive 
# depuis une fonction linaire par morceaux (h = 0 , branches rectilignes se raccordant  leurs voisines en leurs extrmits),
# jusqu'au cas limite des arcs de paraboles dont les tangentes viennent se confondre en leur sommet avec les paliers horizontaux d'ordonne maximale.

Les discontinuits de pente, qui sont au dpart les plus brutales (h = 0), se traduisent par des raies anormalement brillantes dans la palette, dans le vert et le jaune essentiellement:

*h = 0.000*  *h = 0.500*  *h = 1.000* 
Au-del, elles s'estompent progressivement pour disparatre, d'une manire concomitante  l'attnuation des ruptures de pentes au voisinage des paliers horizontaux, qui s'annulent routes pour (h = 1).

# Les intensits des couleurs tant limites  255, le paramtre (h) ne doit thoriquement pas dpasser l'unit; nanmoins, en raison de l'intervention de l'arrondi final


```
Px[i]:= Round(255 * w)
```

les anomalies de dpassement n'apparaissent qu'au-del de 1.092:

_
Il serait donc possible de "doper" la fonction couleur en montant la valeur de (h)  1.092 - voir la palette ci-dessus - bien que celle-ci ne prsente pas d'intrt particulier.

# La constitution de cette palette (RJB), bien que logique, prsente cependant un dtail arbitraire: au bleu pur (0, 0, 255) est oppos l'orange (255, j, 0) dont la teinte dpend de (h) et peut de pas convenir: on peut effectivement dplorer la trop grande extension du jaune dans l'ensemble.


```

```

Il n'est pas exclu d'envisager une lgre dvaluation de la composante jaune.

----------


## Jipt

Expos trs intressant.

En regardant attentivement avec un grand cran les trois graphes superposs, une vidence se fait jour : s'il y a trop de jaune  (h = 1.0) c'est parce qu'il y a *trop de vert*,  cause de la parabole. Et pareil pour le mauve.
Il faudrait tester avec une monte en forme de S allong, une sigmode (mme pas je savais que a s'appelait comme a ! Merci ggl).

a serait facile  remplacer ? Pour toi surement, pour moi mme pas j'y pense (quoique, avec une fonction tangente hyperbolique)

Maintenant,  voir s'il faut l'appliquer aux 3 couleurs primaires.
Il faudrait qu'on puisse choisir.

EDIT :
J'ai bricol a  la va-vite, a rend assez bien SAUF pour le dgrad horizontal qui morfle, suite  la compression gif qui n'est pas capable par construction de rendre toutes les couleurs, on en a dj parl.


Ah, j'ai hte de voir la mme chose avec des sigmodes !

EDIT2 :
Ah pi y a a aussi, et impossible de faire mieux, le gif dtruit compltement les dgrads des cercles :

----------


## wiwaxia

> ... En regardant attentivement avec un grand cran les trois graphes superposs, une vidence se fait jour : s'il y a trop de jaune  (h = 1.0) c'est parce qu'il y a *trop de vert*,  cause de la parabole. Et pareil pour le mauve.
> Il faudrait tester avec une monte en forme de S allong, une sigmode (mme pas je savais que a s'appelait comme a ! Merci ggl) ...


1) Le premier graphe reste  la base de la constitution des palettes (RJB) du fait de l'opposition des couleurs complmentaires, rgulirement espaces: R-V, Or-B, J-V. On doit toutefois arrondir les angles, mais il y a plusieurs solutions.

2) Je comprends ton ide de marche arrondie; cependant les sigmodes et apparentes ne conviennent pas, car elles sont dfinies sur ]-Inf ; +Inf[ .
Un petit polynme appropri pourra trs bien convenir; je regarde cela ds que possible.

----------


## wiwaxia

Il n'a pas t ncessaire de chercher loin pour trouver quelques fonctions simples apportant les modifications souhaites, et dont l'ajustement est  la porte d'un lve de premire.
Trois cas particuliers ont t tests ici, appartenant  la mme famille gnrique; d'autres exemples ne sont nullement exclus.


Le code concernant le calcul des couleurs locales a t remani (il ne pouvait d'ailleurs subsister en l'tat), mais l'accroissement de complexit est rest limit:



```

```

L'initialisation de la matrice image relve de procdures ordinaires:


```

```

----------


## wiwaxia

Voici ce que l'on obtient dans le cas de la premire fonction - polynme Q1 du programme, appel par l'option _Version = 1_:

F1(s) = 0.5*(s/2)2*(3 - (s/2)2)
et en prservant la possibilit une modification limite, mais continue, comme dans le programme prcdent - on a repris ici h = 0 , 0.5 et 1 :

*# h = 0.000* 

*# h = 0.500* 

*# h = 1.000*

----------


## wiwaxia

Voici ce que l'on obtient dans le cas de la seconde fonction - polynme Q2 du programme, appel par l'option _Version = 2_:

F2(s) = 0.5*(s/2)4*(5 - 3*(s/2)2)
et en reprenant toujours pour le paramtre continu les mmes valeurs:

*# h = 0.000*


*# h = 0.500*


*# h = 1.000*

----------


## wiwaxia

Et dans le cas de la troisime - polynme Q3 du programme, appel par l'option _Version = 3_:

F3(s) = 0.25*(s/2)4*(7 - 3*(s/2)4)

*# h = 0.000*


*# h = 0.500*


*# h = 1.000*

----------


## Jipt

Bonsoir,

Faut-il y voir un signe ?
J'ai scrupuleusement recopi tout ton code, adapt ce qui y est inconnu de Lazarus/FreePascal (reel --> real, Z_32 --> uint, bool --> boolean, bref, des dtails), ai ajout les fonctions qui manquent (je les avais par ailleurs), ai rajout la rcupration et l'affichage des pixels calculs et je gagne a :



Tu avoueras que ce n'est pas encourageant, et je ne sais pas du tout o et quoi chercher.


De mon ct, ce matin  la frache j'ai attaqu la rdaction de ce qui suit :

+++
L'il n'est pas fiable, ou plutt, les interprtations du cerveau

Bonjour,

 force de chercher la couleur exacte, j'ai dcouvert avec stupfaction, grce au petit outil en haut  droite (voir image + bas) qui me permet de changer R,G,B de chaque colonne, qu'aprs avoir dfini aux *mmes valeurs* deux colonnes cte  cte mon cerveau m'envoyait *deux impressions diffrentes* !
H oui
Et  l'inverse, des valeurs bien diffrentes me donnaient l'impression de voir la mme teinte.

 partir de l, je considre qu'on ne peut se baser sur rien de prcis et de fiable en ce qui concerne ce qu'on voit et ce qu'*on croit voir*.

Tout est susceptible d'interprtations non contrles et non contrlables.

Je propose qu'on en reste l, car mme si wiwaxia nous trouve la formule qui va bien avec les sigmodes, on ne saura pas si c'est bien ou pas.



L'image ci-dessus (rduite de moiti) satisfait mon il, que demander de plus ?

La palette finale (pour moi, pour aujourd'hui) :


```

```

+++
Je n'ai pas post ce qui prcde, je n'tais pas prt, et en fin d'aprs-midi j'ai rajout a :
+++
Et cette palette, passe au programme qui sait dessiner les courbes des valeurs des teintes, donne a :



et la premire chose qu'on remarque, aprs la beaut spectaculaire de la boule de billard, c'est la rpartition *chaotique* des 3 courbes, avec des zones plates et des angles violents.
Oui.
C'est ce qui permet d'avoir ces superbes teintes dans le dgrad horizontal.

Que dire de plus ? Qu'il y a un peu trop de bleu, au dtriment du vert et du cyan ? Ce n'est pas faux, mais ce matin a ne se voyait pas, et j'ai bien dit plus haut,  propos de la palette finale, _(pour moi, pour aujourd'hui)_.
+++

Et je venais de terminer cette rdaction quand ma messagerie m'a annonc l'arrive de ton post, que je suis all voir toutes affaires cessantes (mais c'tait trs bien, je venais juste de finir [j'adre ces concidenses]), et on peut en lire le compte-rendu tout en haut.

Je susi bien oblig de reconnatre que tes rsultats sont trs jolis, sauf qu'il y manque le dgrad blanc->couleur->noir, ainsi qu'un affichage horizontal pour bien se rendre compte.

----------


## wiwaxia

> ...  force de chercher la couleur exacte, j'ai dcouvert avec stupfaction, grce au petit outil en haut  droite (voir image + bas) qui me permet de changer R,G,B de chaque colonne, qu'aprs avoir dfini aux mmes valeurs deux colonnes cte  cte mon cerveau m'envoyait deux impressions diffrentes !
> H oui
> Et  l'inverse, des valeurs bien diffrentes me donnaient l'impression de voir la mme teinte.
> 
>  partir de l, je considre qu'on ne peut se baser sur rien de prcis et de fiable en ce qui concerne ce qu'on voit et ce qu'on croit voir.
> 
> Tout est susceptible d'interprtations non contrles et non contrlables ...


Ce sujet a t voqu  maintes reprises: la perception des couleurs est extrmement sensible, mais pas du tout fidle (comme d'ailleurs les autres sens); on le sait depuis longtemps, et l'on sait bien grer les illusions d'optique.

Les raies anormalement brillantes en sont justement une, et leur cause est avre: il s'agit des discontinuits de pente que prsentent les fonctions commandant la distribution des couleurs.
Le problme a t rgl pour les palettes  une dimension, dans lesquelles la teinte locale de dpend que d'un seul paramtre; bien sr, les solutions proposes ne sont pas uniques, mais les contraintes qu'elles doivent vrifier sont clairement identifies.




> ... L'image ci-dessus (rduite de moiti) satisfait mon il, que demander de plus??
> La palette finale (pour moi, pour aujourd'hui) ...
> ... / ...
> et la premire chose qu'on remarque, aprs la beaut spectaculaire de la boule de billard, c'est la rpartition chaotique des 3 courbes, avec des zones plates et des angles violents.
> Oui. C'est ce qui permet d'avoir ces superbes teintes dans le dgrad horizontal ...


Tu as en fait repris le spectre chromatique de la lumire blanche, qui est apriodique et ne se prte pas  une prsentation cyclique. Et l'interprtation que tu en donnes est sujette  caution.
Ce qui n'empche pas que la palette linaire est en soi agrable  regarder.

Mais il y a l dessous un sujet que tu n'as jamais voulu aborder franchement: le passage d'une liste finie de couleurs  un dgrad continu de teintes. Je pense (peut-tre  tort ?) que tu a us (et abus) d'expdients qui ont parfois conduit  des rsultats dsastreux, d'autant plus surprenants compte tenu de la puissance des moyens utilise (Free Pascal et Lazarus); et GIF a servi de bouc missaire.




> ... Je suis bien oblig de reconnatre que tes rsultats sont trs jolis, sauf qu'il y manque le dgrad blanc->couleur->noir, ainsi qu'un affichage horizontal pour bien se rendre compte ...


On ne peut rsoudre qu'un seul problme  la fois, et les questions auxquelles j'ai tent de rpondre (clairements uniformes, palettes RJB) ont conduit  des dveloppements assez longs.

Il manquait la programmation de l'volution transversale des teintes vers le noir et le blanc: voil qui vient d'tre fait.

----------


## wiwaxia

On peut envisager plusieurs sortes d'expressions pour la fonction recherche I = F(I, z):

1) Une fonction linaire en deux morceaux, dont la rupture de pente  la limite des deux domaines (z = 1/2) conduit  une zone troite anormalement brillante (ligne ou cercle).

2) Une fonction continument drivable, exempte du dfaut prcdent, dont le graphe rsulte du raccordement  tangentes confondues de deux arcs de parabole; elle est reprsente par deux polynmes su second degr.

3) Une fonction continument drivable prsentant de plus deux tangentes horizontales aux points d'abscisses (z = 1/2) et (z = 1), ce qui a pour effet d'taler le domaine de la couleur mdiane (z ~ 1/2) et celui du blanc (pour z ~ 1).

Voici les palettes rectangulaires correspondant  chacune de ces fonctions - on a repris d'une manire systmatique la dernire des distributions (RJB) des couleurs dfinies dans les messages *#304*, #305, #306 et *#307*: *h = 1.000 , version 3* .

# D'abord, trois les palettes rectangulaires: 
Remarquer la ligne horizontale brillante que prsente la premire, et seule - en illustration de ce qui a t dit au-dessus.

# Ensuite les graphes des coefficients, et les cercles chromatiques correspondants:

*# Pour la fonction linaire par morceaux (degr = 1):*



*# Pour la fonction constitue de polynmes du 2nd degr:*



*# Pour la fonction comportant un polynme de degr 3:*


# Le programme source explicite les trois fonctions utilises:



```

```

... et  titre indicatif les instructions de codage des graphes des coefficients:


```

```

----------


## Jipt

Salut,




> Mais il y a l dessous un sujet que tu n'as jamais voulu aborder franchement: le passage d'une liste finie de couleurs  un dgrad continu de teintes. Je pense (peut-tre  tort ?) que tu a us (et abus) d'expdients qui ont parfois conduit  des rsultats dsastreux, d'autant plus surprenants compte tenu de la puissance des moyens utilise (Free Pascal et Lazarus); et *GIF a servi de bouc missaire*.


comme a m'puise que tu rabaches a sans arrt, on va faire une mise au point *dfinitive* sur ce sujet :
je pars d'un programme dans lequel j'tudie la rpartition et les carts de teinte  la main (avec les curseurs), et voil un cercle  l'intant t, rcupr avec The Gimp  qui j'ai demand une "copie d'cran en slectionnant la zone  la souris", image que j'ai exporte telle quelle en *png* sans toucher  aucune option :


Ensuite j'ai juste redimensionn l'image aux deux-tiers (390 -> 260) et rexporte dans un autre fichier :


puis je l'ai exporte en demandant *jpg* et une compression  80 % :


et enfin une exportation en *gif*, sans aucune animation puisqu'il n'y a qu'une image, et voil la catastrophe :


Depuis le dbut je te rpte que la norme gif *ne peut grer que 256* couleurs, il faut donc bien que The Gimp en fasse sauter pour faire le boulot d'export, et c'est ce qu'on voit.

Pour le reste je n'ai pas encore regard.

----------


## Jipt

> Il n'a pas t ncessaire de chercher loin pour trouver *quelques fonctions simples* apportant les modifications souhaites, et dont l'ajustement est  la porte d'un lve de premire.


Mais il doit en manquer une : je constate que Lazarus n'est pas satisfait du tout de ta fonction GrapheRJB, comme on peut le lire ci-dessous :


En effet, on va appeler Axes avec des variables non utilises (soulignes par des vaguelettes en orange), a ne peut pas le faire !

Et je ne suis pas devin, et ma boule de cristal est casse

PS : je n'ai pas compris pourquoi j'ai trouv plusieurs fois les noms Larg_Image et Haut_Image quand les fonctions et procdures ne connaissent que La et Ha, d'o mon adaptation -- tu ne nous aurais pas mlang les sources, par hasard ?

----------


## wiwaxia

> Mais il doit en manquer une : je constate que Lazarus n'est pas satisfait du tout de ta fonction GrapheRJB, comme on peut le lire ci-dessous :
> ... / ...
> En effet, on va appeler Axes avec des variables non utilises (soulignes par des vaguelettes en orange), a ne peut pas le faire !
> Et je ne suis pas devin, et ma boule de cristal est casse


Les six variables en question sont initialises dans la procdure _Axes(...)_ par des calculs apparents ou interdpendants; on aurait tort de se priver de cette facilit.


```

```

Et je me demande bien comment le programme aurait pu fonctionner: l'oubli d'une affectation est une erreur qui ne pardonne pas.




> ... PS : je n'ai pas compris pourquoi j'ai trouv plusieurs fois les noms Larg_Image et Haut_Image quand les fonctions et procdures ne connaissent que La et Ha, d'o mon adaptation -- *tu ne nous aurais pas mlang les sources, par hasard ?*


Oh, certainement pas !  ::aie::  S'il y a une partie du code immuable, c'est bien celle_l !

_Larg_Image, Haut_Image, Matr_Image_ dsignent des *variables globales* dfinies dans l'unit Bitmap; les identificateurs ont t dlibrment choisis longs, afin d'viter toute mprise dans le dveloppement du programme.
_La, Ha_ dsignent les *variables locales* correspondantes, qui reoivent les valeurs des dimensions de l'image, aprs saisie de ces dernires.

L'appel d'une procdure utilise les variables globales, comme tu peux le voir ci-dessous: 


```

```

La conception du programme principal est assez fruste, en raison des multiples variantes que les changes sur forum incitent  coder.
L'instruction de la ligne (5), par exemple, renvoie  


```
PROCEDURE CalcMat_Im(La, Ha: Z_32; VAR Ma: Tab_Pix); ... / ...
```

*Les variables locales doivent recevoir un nom diffrent de celui de la variable globale associe;* il faut faire court, afin de prserver la lisibilit des calculs; mais choisir un nom en rapport direct avec celui de la variable globale pour soulager l'effort de mmoire.

J'ai l'impression de faire des rappels de _Basic Pasca_l.  ::D:

----------


## Jipt

> J'ai l'impression de faire des rappels de _Basic Pasca_l.


Et moi j'ai l'impression que des fois on me prend pour le dernier des bents




> _Larg_Image, Haut_Image, Matr_Image_ dsignent des *variables globales* dfinies dans l'unit *Bitmap*;


Unit que nous n'avons pas.
Bien c'que j'disais, il nous manque quelque chose :

----------


## wiwaxia

> ... Unit que nous n'avons pas ...


C'est une unit personnelle.
J'ai clairement dit, il y a une quinzaine de pages, que tu devais toi-mme prendre en charge la gestion de la matrice image.
Et je me rappelle que tu avais fait le lien, en d'autres circonstances, entre cette matrice et les variables de type _T_Bitmap_ de Lazarus & Cie.




> ... Bien c'que j'disais, il nous manque quelque chose ...


Allez, pas de mauvais esprit. Je posterai l'unit, s'il le faut.

PS: Voir #44, *#46*

----------


## Jipt

> J'ai clairement dit, il y a une quinzaine de pages, que tu devais toi-mme prendre en charge la gestion de la matrice image.
> Et je me rappelle que tu avais fait le lien, en d'autres circonstances, entre cette matrice et les variables de type _T_Bitmap_ de Lazarus & Cie.


Oui, c'est ce que j'ai fait, mais l, les choses ont chang.

J'ai bien retrouv en page 46 (il y a 45 jours ! Tu penses comme les choses ont volu depuis.) tes dimensions 0..2000 pour la matrice, mais a ne suffit pas car, quand je regarde tes copies d'cran, je vois des images rectangulaires pour les courbes et des images carres pour les cercles dgrads, et rien qui me dit comment tout cela est organis  partir des codes fournis.

Je suis donc dans l'incapacit totale de raccorder les morceaux.

J'en suis l et ne pourrais pas aller plus loin sans autres prcisions.





> Allez, pas de mauvais esprit. Je posterai l'unit, s'il le faut.


Des dtails suffiraient.

----------


## wiwaxia

Contenu supprim. Documentation trop volumineuse.

----------


## Jipt

> Je n'ai pas le temps de faire le tri de ce qui est utile dans les units satellites:


Et moi je n'ai absolument pas le temps de dmonter tout ton programme pour comprendre comment il fonctionne, d'autant plus qu'avec ses codes j'aurais l'impression de retourner  la prhistoire de la programmation, par exemple ta procdure d'enregistrement d'un fichier bitmap et sa cinquantaine ( la louche) de lignes rparties entre plusieurs fonctions et procdures quand FreePascal et Lazarus nous proposent bitmap.SavetoToFile(chemin + 'nom_de_fichier');. Le monde a volu, hein.

Alors OK, tu as russi  crire des procdures cauchemardesques et des fonctions hallucinantes, qui produisent les fichiers que tu attendais, mais je ne vais pas pouvoir les utiliser car mme si j'arrivais  faire fonctionner cette usine  gaz, je serais bien incapable de la maintenir, la preuve avec la petite image que j'ai poste, pour laquelle je vois pas par quel bout prendre le problme.

Par exemple, j'ai signal en dbut d'aprs_midi la non-initialisation de la variable deltaX (parmi d'autres) et ce soir le problme reste entier car dans les codes que tu as posts j'ai fait une recherche sur ce mot, recherche qui n'a pas abouti.
 partir de l, impossible d'avancer.


Et au bout du compte, pourquoi se prendre la tte avec des fonctions mathmatiques aux noms imprononables quand, de toute faon, il faudra, une fois la matrice gnre, faire des retouches  la main pour liminer les surbrillances, mmmh ? Autant attaquer directement avec mes 24x3 curseurs.

----------


## Jipt

Et pendant que je te tiens et puisqu'il y a zro commentaire dans tes codes, auras-tu la bont d'expliquer 


```

```

parce que pour moi,  partir du moment o _le carr de l'hypotnuse est gal  la somme des carrs des deux autres cts_, on devrait s'en sortir avec 


```

```

(je te laisse le "h" l mais normalement il n'y en a plus : 


> Lajout dun  h  est une hypercorrection tymologiquement injustifie et ici des trucs en grec, suivez le lien dessous pour lire la suite


)
Voili voilou,

 +++
Oblig de poster en deux morceaux, parce qu'en un seul j'ai gagn a :

Premire fois de ma vie que je vois a depuis que je suis inscrit
Et en fait, a a l'air li  du texte o il y a des lettres grecques (je ne vois que a) venant de l par copier/coller.

----------


## wiwaxia

> Et moi je n'ai absolument pas le temps de dmonter tout ton programme pour comprendre comment il fonctionne, d'autant plus qu'avec ses codes j'aurais l'impression de retourner  la prhistoire de la programmation, par exemple ta procdure d'enregistrement d'un fichier bitmap et sa cinquantaine ( la louche) de lignes rparties entre plusieurs fonctions et procdures quand FreePascal et Lazarus nous proposent bitmap.SavetoToFile(chemin + 'nom_de_fichier');. Le monde a volu, hein.
> 
> Alors OK, tu as russi  crire des procdures cauchemardesques et des fonctions hallucinantes, qui produisent les fichiers que tu attendais, mais je ne vais pas pouvoir les utiliser car mme si j'arrivais  faire fonctionner cette usine  gaz, je serais bien incapable de la maintenir, la preuve avec la petite image que j'ai poste, pour laquelle je vois pas par quel bout prendre le problme ...


1) Il ne t'tait pas demand de lire et de comprendre la partie implmentation. Il s'agissait d'excuter deux procdures de l'interface, rien de plus.
Maintenant, pour ce qui est de la prhistoire, les fichiers Bitmap sont rests ce qu'ils taient, et tes logiciels effectuent d'une manire cache (c  d en code excutable) une tche analogue  celle dont tu as pu parcourir le code source. Il faut dans un cas comme dans l'autre grer les 54 octets constituant l'entte; et l'unit fonctionnant correctement, je ne m'attarde plus depuis longtemps  ces dtails.

2) Si tu avais eu la curiosit de compiler l'usine  gaz en question avec le petit programme que je proposais, tu aurais t confront   la vision insoutenable de la fentre suivante:



propre, il est vrai,   dmoraliser le plus aguerri des programmeurs dveloppeurs  ::aie:: .




> ... Par exemple, j'ai signal en dbut d'aprs_midi la non-initialisation de la variable deltaX (parmi d'autres) et ce soir le problme reste entier car dans les codes que tu as posts j'ai fait une recherche sur ce mot, recherche qui n'a pas abouti ...


J'ai cit les instructions d'initialisation; si tu ne comprends toujours pas, c'est que tu as de gros problmes avec la programmation en gnral, et le langage Pascal en particulier ... Ce n'est plus du ressort de la rationalit.




> ... Et au bout du compte, pourquoi se prendre la tte avec des fonctions mathmatiques aux noms imprononables quand, de toute faon, il faudra, une fois la matrice gnre, faire des retouches  la main pour liminer les surbrillances, mmmh ? Autant attaquer directement avec mes 24x3 curseurs.


Les surbrillances ont prcisment t limines  l'aide de fonctions paramtres, permettant de rgler l'volution des teintes ... Je ne compte plus les sries d'algorithmes et d'images qui ont t proposes, ne demandant aucune retouche manuelle.




> ... Et pendant que je te tiens et puisqu'il y a zro commentaire dans tes codes, auras-tu la bont d'expliquer 
> 
> 
> ```
> 
> ```
> 
> parce que pour moi,  partir du moment o _le carr de l'hypotnuse est gal  la somme des carrs des deux autres cts_, on devrait s'en sortir avec 
> 
> ...


Cette *fonction de 3 variables* rsulte de la gnralisation du thorme de Pythagore  l'espace  3 dimensions; elle n'est d'aucune utilit dans le plan. Un minimum de rflexion t'aurait permis de voir qu'elle n'intervient pas dans les calculs actuels.

L'intelligence, c'est comme la libert de la presse, elle ne s'use que si l'on ne s'en sert pas.

----------


## Jipt

> 1) Il ne t'tait pas demand de lire et de comprendre la partie implmentation.  Il s'agissait d'excuter deux procdures de l'interface, rien de plus.


Si les choses taient aussi simples et faciles, a se saurait. Depuis quelques annes que je frquente tes codes, je suis bien oblig  chaque fois de lever le capot pour mettre les mains dans le cambouis et remplacer ton Z_32 (vachement parlant) par un uint et, plus facile, ton reel par un real.
Et d'autres, genre une fonction qui s'appelle Q (bravo le nom pour savoir ce qu'elle fait  ::roll:: ) qui utilise une variable q et si ton compilateur accepte cette horreur, le mien n'en veut pas. Faut donc bien aller trifouiller.
Et pour prouver que je n'affabule pas : 

```

```

Alors pour savoir qui fait quoi, l, il faut un papier et un crayon, et tu noteras que j'ai donc renomm la variable q en qq.
Et on pourrait l'crire ainsi : FUNCTION Q(h,i,j,s: real): real; BEGIN Result:= h * (s-i) * (j-s) END;, avec un nom plus parlant.





> 2) Si tu avais eu l'intelligence de compiler l'usine  gaz en question avec le petit programme que je proposais, tu aurais t confront  la vision insoutenable de la fentre suivante:
> Pice jointe 479995


Oh oui, j'ai tellement t terrifi que je n'ai pas eu l'ide de rajouter La := img4affichage.Width; et pareil pour Height, et que suite  tes prcisions j'ai rajout la mme chose pour Larg_Image et Haut_
Comment crois-tu que j'ai pu obtenir une image moche et rate mais quand mme  la taille de tes cercles ?

 ce propos, tu nous parles de variables globales et locales mais comme tu as supprim les codes on ne peut plus creuser. Nul.




> J'ai cit les instructions d'initialisation; si tu ne comprends toujours pas, c'est que tu as de gros problmes avec la programmation en gnral, et le langage Pascal en particulier ... Ce n'est plus du ressort de la rationalit.


Oui, tu en parles plus avant, la procdure Axes initialise X_1, X_2, etc., et moi je te dis que mon compilateur m'engueule  propos de X1, X2 (as-tu vu/lu ma copie d'cran ? On dirait bien que non). Nettoies tes lunettes et tu verras qu'il ne s'agit pas des mmes noms de variables.
Quant  deltaX et Y, pas de nouvelles, le mystre reste entier.




> Cette *fonction de 3 variables* rsulte de la gnralisation du thorme de Pythagore  l'espace  3 dimensions; elle n'est d'aucune utilit dans le plan. Un minimum de rflexion t'aurait permis de voir qu'elle n'intervient pas dans les calculs actuels.


Quand j'ai parcouru le code j'ai lu "hypothnuse" alors je me suis dit "_tiens, mais en fait il en a une, de fonction, pour calculer l'hypotnuse_ (sans "h")", me souvenant de ta "Norme1" (tu parles d'un nom nul !) et n'ai pas imagin un seul instant qu'on jouait l en 3D, et comme, fidle  toi-mme il y a zro doc et zro commentaire, voil le temps qu'on perd
Si j'avais d crite a, j'aurais choisi hypotenuz2D et hypotenuz3D l'une au-dessus de l'autre chacune avec son code et le tour tait jou et on serait pas l  perdre notre temps et notre belle jeunesse.


Bref, tu sais quoi ? Tu devrais te monter une machine virtuelle, y installer le dernier Lazarus et essayer d'y compiler ton prog : tu verras bien

----------


## wiwaxia

> ... *Depuis quelques annes que je frquente tes codes*, je suis bien oblig  chaque fois de lever le capot pour mettre les mains dans le cambouis et remplacer ton Z_32 (vachement parlant) par un uint et, plus facile, ton reel par un real ...


Alors pourquoi poursuivre la frquentation ? Rien ne contraint  les lire ...




> ... Et d'autres, genre une fonction qui s'appelle Q (bravo le nom pour savoir ce qu'elle fait ) qui utilise une variable q et si ton compilateur accepte cette horreur, le mien n'en veut pas. Faut donc bien aller trifouiller.
> Et pour prouver que je n'affabule pas : 
> 
> ```
> 
> ```
> 
> Alors pour savoir qui fait quoi, l, il faut un papier et un crayon, et tu noteras que j'ai donc renomm la variable q en qq ...


Pour prouver ma bonne foi, je vais faire acte de contrition publique, une chane autour du cou et les cheveux couverts de cendre  ::aie::  :oui, le programmeur indigne que je suis aurait d crire


```

```

Je remarque cependant que la compilation de Virtual P. n'a rien signal  ::D: , parce que l'instruction _Result_ constitue une barrire tanche entre les variables locales et le nom externe de la fonction; un code rdig selon l"ancienne norme du Turbo P.


```

```

aurait videmment bloqu la compilation (_Duplicate identifier_); d'ailleurs je ne l'aurais pas crit.
Tout lycen pourvu de quelques rudiments de programmation voit immdiatement qu'il s'agit du produit 
h*(s - i)*(j - s) . Nul besoin d'un nom  rallonge pour dsigner ce monme.




> ... Et on pourrait l'crire ainsi : FUNCTION Q(h,i,j,s: real): real; BEGIN Result:= h * (s-i) * (j-s) END;, avec un nom plus parlant.


a, c'est de l'espranto.  chacun son style. Et cela terait toute raison d'tre  la fonction elle-mme: autant l'crire directement dans la procdure d'origine.




> ... Oh oui, j'ai tellement t terrifi que je n'ai pas eu l'ide de rajouter La := img4affichage.Width; et pareil pour Height, et que suite  tes prcisions j'ai rajout la mme chose pour Larg_Image et Haut_
> Comment crois-tu que j'ai pu obtenir une image moche et rate mais quand mme  la taille de tes cercles ? ...


Cela prouve seulement que tu n'as malheureusement rien compris  ce qui tait propos: il suffisait de compiler et de lancer (sans changer quoi que ce soit) un programme qui ne te demandait que les dimensions de l'image, et le nom du fichier.
Tu pouvais ensuite modifier  ta guise le contenu de la procdure centrale; cela t'aurait permis de comprendre les algorithmes, et de venir  bout de difficults que tu dclarais insurmontables.




> ...  ce propos, tu nous parles de variables globales et locales mais comme tu as supprim les codes on ne peut plus creuser. Nul ...


Je n'avais aucune raison de maintenir sur le forum une documentation qui s'est rvle trs encombrante, que tu avais consulte et en principe tlcharge. Et les appels de procdure que j'ai cits suffisent amplement  la distinction entre les deux sortes de variables.




> ... Oui, tu en parles plus avant, la procdure Axes initialise X_1, X_2, etc., et moi je te dis que mon compilateur m'engueule  propos de X1, X2 (as-tu vu/lu ma copie d'cran ? On dirait bien que non). Nettoies tes lunettes et tu verras qu'il ne s'agit pas des mmes noms de variables.
> Quant  deltaX et Y, pas de nouvelles, le mystre reste entier ...


L'appel de la procdure _Axes(...)_


```
 Axes(Larg_Image, Haut_Image, X1, X2, Y1, Y2, DeltaX, DeltaY, Matr_Image);
```

entrane l'initialisation des variables (_X1, X2, Y1, Y2, DeltaX, DeltaY_):


```

```

(_X_1, X_2, Y_1, Y_2, Dx, Dy_) sont les *adresses* des variables correspondantes (_X1, X2, Y1, Y2, DeltaX, DeltaY_).
Elles ont t intentionnellement dsignes par des noms apparents, mais diffrents.
Et l'avis du compilateur Lazarus n'est nullement rdhibitoire:

"la variable "nnn" ne parat pas initialise". Il est prudent, ce logiciel; et poli, avec a.
Tu devrais envisager srieusement une remise  niveau en Turbo Pascal, avant de lancer les limiers de Lazarus sur mes talons  ::D:  .




> ... Quand j'ai parcouru le code j'ai lu "hypothnuse" alors je me suis dit "_tiens, mais en fait il en a une, de fonction, pour calculer l'hypotnuse_ (sans "h")", *me souvenant de ta "Norme1" (tu parles d'un nom nul !)* et n'ai pas imagin un seul instant qu'on jouait l en 3D, et comme, fidle  toi-mme il y a zro doc et zro commentaire, voil le temps qu'on perd
> Si j'avais d crite a, j'aurais choisi hypotenuz2D et hypotenuz3D l'une au-dessus de l'autre chacune avec son code et le tour tait jou et on serait pas l  perdre notre temps et notre belle jeunesse ...


Je ne savais pas qu'il fallait du temps pour compter jusqu' trois. 
(_Norme1, Norme2_) dsignent tout naturellement la norme d'un vecteur et son carr. L'ignorance totale des mathmatiques ne saurait constituer un argument.
Et j'ai observ jusqu' prsent une neutralit stoque  ::aie::   la lecture de tes propres identificateurs: l'usage du fontik, pas plus que celui du franglais ou des paraphrases dbilitantes, n'honore le Pascal (ou quelque autre langage que ce soit).




> ... Bref, tu sais quoi ? Tu devrais te monter une machine virtuelle, y installer le dernier Lazarus et essayer d'y compiler ton prog : tu verras bien


C'est une ide certainement intressante. Je ne ddaigne aucune occasion d'apprendre - au contraire de toi.

Et tu sais quoi ? Tu pourrais faire l'effort de paratre un peu moins grincheux. Je ne suis nullement tenu de faire les frais de ton acrimonie, et tout le monde y gagnerait.

----------


## Jipt

Salut salut,

Voil, je considre que j'ai termin : d'un point de vue esthtique je suis trs satisfait, et d'un point de vue maintenance, il m'est extrmement facile, en utilisant d'une part l'outil aux 72 curseurs et d'autre part la partie tableur (et donc dessin, pour contrler les courbes et leurs raccordements) de LibreOffice, d'arriver  ce rsultat (rduit au deux-tiers) :


D'aucuns pourront relever qu'on devine les changements de colonnes dans le bleu du carr dgrad, c'est vrai, mais c'est juste li  la petite taille du carr. La preuve avec l'autre outil quip d'un zoom :


Ceux qui sont intresss trouveront ici la map des 24 couleurs :


```

```

Merci  tous, particulirement  wiwaxia, qui m'a bien support.

PS : je reprendrai sans doute un peu le jaune pour l'augmenter au dtriment du vert, mais pas tout de suite.

----------


## Jipt

Bonjour,

comme prvu j'ai lgrement agrandi le jaune, rduit le vert, augment le cyan, ajust d'autres valeurs en fonction des prcdentes, c'est toute une histoire car Pierre impacte Paul qui rebondit sur Jacques, il m'aura fallu deux jours (bon, pas h 24 non plus, hein  ::D: ).

Au final a donne a 


qui s'appuie sur a


```

```

Et comme on dit dans les mariages, "_si quelqu'un a quelque chose  dire, qu'il le dise maintenant ou se taise  jamais._"

Concernant le zip, je constate qu'il a t tlcharg 8 fois, j'avais demand des retours j'en ai eu *un*. D'aucuns diront que c'est un bon chiffre, perso je trouve a parfaitement dcourageant pour le futur.

Allez, une 'tite dernire pour la route (info)


 ::coucou::

----------


## wiwaxia

Bonjour,  ::D: 




> ... Concernant le zip, je constate qu'il a t tlcharg 8 fois ...


Tu as donc install un compteur. Comment as-tu fait ? Simple demande sur un dtail technique.

J'ai repris ta liste de 24 couleurs, pour chercher le meilleur moyen de passer  un dgrad continu des teintes. 


De tous les algorithmes tests, le plus satisfaisant est le plus simple, celui qui recourt  une interpolation linaire (dont on voit de rsultat dans la zone infrieure de l'image ci-dessus):


```

```

Les stries,  peines discernables dans le cas de la palette rectangulaire, s'estompent compltement lorsque les traits monochromes ne sont plus parallles.

Et comme un peu de fantaisie ne gte rien, j'ai regard ce que donnait ton chelle de couleurs dans le cas 
a) d'une hypocyclode d'ordre 5:


b) du noeud de trfle:


c) du polygone crois d'ordre 5/2:


d) de rubans ferms alatoires construits sur un ensemble de points (7  15):


Les calculs initiaux sont effectus sur le mme domaine de *R*2: [0 ; 1[[0 ; 1[ ,
ce qui laisse toute libert pour le choix des dimensions de l'image.

----------


## Jipt

Slut !





> Tu as donc *install* un compteur. Comment as-tu fait ? Simple demande sur un dtail technique.


Mme pas ! J'ai post mon zip et ensuite il suffit de passer la souris sur le lien, l'infobulle te donne le nombre de tlchargements.




> J'ai repris *ta liste* de 24 couleurs, pour chercher le meilleur moyen de passer  un dgrad continu des teintes.


Qui a t rcemment mise  jour :


```

```




> Les calculs initiaux sont effectus sur le mme domaine de *R*2: [0 ; 1[[0 ; 1[ ,
> ce qui laisse toute libert pour le choix des dimensions de l'image.


Tant mieux tant mieux, en ce qui me concerne, si je sors des dimensions divisibles par 24, a part en sucette sous Windows, sans doute li aux histoires de padding des lignes des bitmaps si on travaille en 24 bits.
Bah...

En tout cas, tes rendus sont *absolument magnifiques* !  ::ccool::

----------


## Jipt

Bonjour,


OK, ce n'est pas un rouge vraiment franc du collier mais bon, cette pochette m'a tap dans l'il alors j'en profite pour poser une question : 
est-ce qu'il serait possible d'avoir les mmes images gomtriques tortures que celles vues prcdemment, mais construites  partir d'une matrice *RGB* pure et dure, juste pour voir et comparer ?
Voil les valeurs,


```

```

et merci d'avance !

----------


## wiwaxia

> ... est-ce qu'il serait possible d'avoir les mmes images gomtriques tortures que celles vues prcdemment, mais construites  partir d'une matrice *RGB* pure et dure, juste pour voir et comparer ?
> Voil les valeurs ... / ...,
> 
> et merci d'avance !


 ::D:  Il suffit de changer la constante _ListeC_ attache  la fonction _Palette01(t)_.

C'est tout.

----------


## Jipt

> Il suffit de changer la constante _ListeC_ attache  la fonction _Palette01(t)_.
> 
> C'est tout.


Tu n'as pas capt que si je demandais, c'tait juste parce que je n'avais *absolument aucune ide* de comment il fallait faire concernant *tout le reste* ?

Bon, enfin, c'est pas grave.

----------


## anapurna

salut 

c'est de cela qu'il aurait aimer avoir le code

----------


## wiwaxia

_Chi va piano, va sano_




Le polygone est dcevant, parce qu'il ne respecte pas la continuit des teintes.

----------


## wiwaxia

> salut 
> 
> c'est de cela qu'il aurait aim avoir le code


Le noeud de trfle est ici constitu d'un faisceau de courbes dont les limites (C1, C2) admettent pour quations polaires:

ρ1 = (2A - 1)/(1 + (1 - A)Cos(1.5θ)) ; ρ2 = Bρ1
et l'on a pris ici: B = 0.6 ; A:= 0.5(1 + B2) .

La priode correspond  deux tours, soit 4π radians.

----------


## Jipt

> c'est de cela qu'il aurait aimer avoir le code


OMG ! Je ne savais pas que ce genre de site existait. 
Et tu as bien compris mon souhait.




> _Chi va piano, va sano_


Maintenant, quand je vois le rsultat, ok, je suis satisfait, je constate que le rjb est plus sympathique que le rvb, et a me suffit.

Pas la peine de me fournir du code, j'ai dj tourn la page.

Merci  tous pour tout, et  bientt pour de nouvelles aventures.
 ::coucou::

----------


## Jipt

Bonjour,



> _Chi va piano, va sano_


ce qui n'empche pas l'_accidento_ !

Y a des bugs...   ::aie:: 

De haut en bas, 
un bout de l'hypoC rjb
un bout du nud de trfle rjb
3 bandes extraites du nud de trfle rvb.

----------


## wiwaxia

_chi va piano, va sano e va lontano._

Rien n'chappe  l'oeil de lynx du critique.
Il suffit d'augmenter le nombre de segments monochromes tracs lors du balayage pour initialiser tous les pixels.

Le seuil de disparition de tous les points rsiduels est nanmoins difficile  valuer.

Pour les deux premires images, _Imax_ est pass de 240000  300000, et de 250000  411000; des valeurs plus faibles existent certainement, mais leur recherche est trs longue.




La srie des images suivantes permet de comprendre leur gense, le nombre de traits suivant ici une progression gomtrique de raison 101/3 :
Imax = 100 , 215 , 464 , 1000 , 2150 , 4640 , 10000 , 21500 , 46400 .

----------


## Jipt

> Rien n'chappe  l'oeil de lynx du critique.


Si je peux me permettre : _presque rien n'chappe  l'oeil du lynx_
_presque_ car je laisse passer des trucs, je le sais, et j'ai supprim la fin, que je trouve de trs mauvais got. Qu'y puis-je si j'ai un regard aiguis ? Tu devrais tre content, je participe  l'amlioration des choses, des codes en l'espce, et l, je repre un carr mauve qui te rsiste, mais pas dans les images de droite de la ligne centrale (2150 et 4640), va comprendre...

Avec un coup de loupe on le voit mieux :


Ce n'est pas le carr noir, lui c'est le viseur de la loupe.

----------


## Jipt

> 3 bandes extraites du nud de trfle rvb.


Ces 3 bandes montrent *4* points, il y en a *2* autres juste au-dessus de l'extrme-droite, que je n'avais pas vu du premier coup car a dpend un peu de la couleur qui est dessous (d'o le _presque_ d'hier,  ::P: ).
Et du fichier.
Car je suis parti du premier, et en rdigeant cette rponse je constate qu'un nouveau avec une rpartition diffrente des couleurs est arriv hier.

Ce matin j'ai repris un vieux prog de modif des couleurs, lui ai rajout l'automatisation de la modif de hue (+1) aprs conversion rgb to hsl de chaque pixel, un coup d'enregistrement vido et a donne a :

noeudtrefle.fla

a s'ouvre avec vlc et surement avec d'autres, c'est le seul format vido support par le forum (ou alors faut zipper, ou hbergeur externe)

On y voit bien les deux pixels supplmentaires, ainsi que deux dfauts de raccordement des couleurs,  10 h 30 et  2 h  peu prs, je dirais, dans les zones troites du centre.

----------


## wiwaxia

> ... et l, je repre un carr mauve qui te rsiste, mais pas dans les images de droite de la ligne centrale (2150 et 4640), va comprendre ...


L'anomalie que tu as releve avec pertinence n'a rien de mystrieux, et les astuces permettant de la faire disparatre ne manquent pas; j'ai cependant cart tout ce qui relevait du bricolage, pour m'en tenir  l'essentiel.

1) Les courbes dlimitant le ruban admettent pour quations paramtriques:
 X1 = Acos(T) + Bcos(4T) ;  Y1 = -Asin(t) + Bsin(4t) ;
 X2 = Acos(t) + Ccos(4t) ;  Y2 = -Asint + Csin(4t) ;les trois coefficients vrifiant:
C:= 0.478776 ; A:= 1 - C ; B:= A/5 .
Le balayage du ruban s'effectue dans le sens rtrograde en raison des valeurs choisies, et  partir de la gauche (Tinitial= Pi), afin que soit correctement gr le recouvrement mutuel des boucles:


```

```

Le rouge initial est bientt recouvert par le jaune, et celui-ci bord en fin de parcours par le mauve:


Noter le pixel solitaire jaune (situ au bord infrieur de la portion initiale du ruban), symtrique du pixel mauve que tu as dtect, et qui apparat en fin de balayage.
L'un comme l'autre sont dus  l'intervention de l'arrondi d'un rel, lors du calcul des coordonnes de chaque pixel; et c'est lors du trac d'une frontire horizontale ou verticale que ces anomalies graphiques sont les plus apparentes.

2) La valeur de la constante (C), d'abord dtermine manuellement sur six dcimales, correspond au contact des deux bords du ruban sur l'axe horizontal (x'x); on suppose en fait l'existence pour le second graphe (C2) d'un point double d'auto-intersection  tangente horizontale, qui se traduit par les quations:
(1 - C)Sin(t) = C.Sin(4t) ; (1 - C)Cos(t) = 4C.Cos(4t) ;et l'on vrifie facilement que le paramtre (t) est gal  l'une des racines non triviales (t ≠ 0 et π) de l'quation 
3.Sin(5t) = 5.Sin(3t)d'o: t = 114.094 842 552 11 ...  .

3) Il s'agit d'une valeur approche par excs, et l'introduction de la valeur approche par dfaut
C = 0.478775fait disparatre l'intrus:

Le mme effet se reproduit quel que soit le rang de la dcimale concerne:


Ce n'est donc pas un problme de prcision, et il est inutile de consacrer une procdure Pascal au calcul de la racine en cause, avec 18 ou 19 chiffres significatifs: la discontinuit se prsentera toujours.

PS: Je n'ai pas pu ouvrir le fichier noeudtrefle.fla .

----------


## Jipt

Yop !

Merci pour toutes ces explications.




> PS: Je n'ai pas pu ouvrir le fichier noeudtrefle.fla .


Et avec quoi as-tu essay de l'ouvrir ? Je rappelle que vlc l'ouvre, sous Linux comme sous Windows.

----------


## wiwaxia

> ... Je rappelle que vlc l'ouvre, sous Linux comme sous Windows.


Merci pour l'info !  ::D:

----------

