Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #201
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Retour aux équations :
    Moi, j'ai besoin de comprendre, et avec mes faibles moyens je ne vois aucune logique dans ce qui précède et que je reprends ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    1: w := ( 2*Cost + 1)/ 3;
    2: w := ( 8*Cost + 4*Sint*Sint + 1)/ 9;
    3: w := (128*Cost + 64*Sint*Sint + 16*Sint*Sint*Sint*Sint + 7)/135;

    128 c'est 27 et le 7 on le retrouve avant la parenthèse fermante, tout comme la 1re ligne où 2 c'est 21 qu'on retrouve au même endroit.
    Mais 8 c'est 23 et si je mets un 3 au lieu du 1 dans la parenthèse de la 2e ligne c'est la cata.
    Mauvais plan.
    Tout au bout, 1re ligne 3 c'est 31, dessous 9 c'est 32 mais 135 c'est rien, ou plutôt 33*5, rien à voir avec les deux précédents.
    À partir de ces informations, il m'est impossible d'envisager d'écrire une 4e ligne, à part
    4: w := (256*Cost + je_sais_pas_quoi)/34*?

    Au milieu, 4 c'est 22, 64 c'est 26, dois-je inventer un 210*Sint*Sint ?
    De toute façon, je ne saurai pas quoi mettre après.
    Ne perd pas ton temps à ce genre de conjectures tout à fait infondées; la détermination des coefficients est basée sur l'utilisation des développements limités des fonctions Sin(x) et Cos(x) au voisinage de zéro (formules de Taylor-Young).

    Je vois que tu te mets à coder d'une façon plus claire ; devant tant de bonne volonté, je te donne l'expression de la dernière fonction, que je n'ai pas eu le temps d'insérer dans le programme:
    F4(t) = (1024*Cos(t) + 512*Sin(t)2 +128*Sin(t)4 + 64*Sin(t)6 + 29)/1053
    qui doit vérifier: F(0)= 1 et F(2*Pi/3) = 0 .

    Si tu pouvais éviter de commettre des inconguïtés comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    w := (128*Cost + 64*Sint*Sint + 16*Sint*Sint*Sint*Sint + 7)/135;
    ce serait presque parfait !
    Allez, un petit effort, il suffit de poser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sint2 = Sqr(Sint); Sint4:= Sqr(Sint2); Sint6:= Sint2 * Sint4;


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  2. #202
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Bonsoir,

    Citation Envoyé par wiwaxia Voir le message
    Ne perd pas ton temps à ce genre de conjectures tout à fait infondées;
    C'était juste pour montrer comment je cherchais, à ma manière empirique, n'en ayant pas d'autre (lire + bas)


    Citation Envoyé par wiwaxia Voir le message
    la détermination des coefficients est basée sur l'utilisation des développements limités des fonctions Sin(x) et Cos(x) au voisinage de zéro (formules de Taylor-Young).
    J'ai suivi ton lien sur le DL et disons-le tout de suite, je n'ai strictement rien compris.
    Par exemple, à un moment il y a cet exemple
    Nom : cosinus_et_dl.png
Affichages : 17
Taille : 18,1 Ko

    et quand je le regarde, je suis incapable de savoir si la fonction cosinus est la courbe noire ou la courbe bleue.
    Tu mesures l'étendue des dégâts ?

    Merci pour la formule, je l'ai mise en œuvre en une poignée de secondes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        case idx of
          1: w := (   2*Cost +   1)/3;
          2: w := (   8*Cost +   4*Sint2 + 1)/9;
          3: w := ( 128*Cost +  64*Sint2 + 16*Sint4 +  7)/135;
          4: w := (1024*Cost + 512*Sint2 +128*Sint4 + 64*Sint6 + 29)/1053;
        end;
    C'est beau, c'est propre, et c'est totalement incompréhensible pour moi, un véritable charabia dans une langue étrangère, désolé…


    Ce qui me fait peur (ce n'est pas la première fois que je lis ça sous ta plume), c'est l'expression
    Citation Envoyé par wiwaxia Voir le message
    qui doit vérifier: F(0)= 1 et F(2*Pi/3) = 0 .
    C'est moi qui dois vérifier ?
    Bon, allez, courage, calculons :
    -- avec t = 0
    cos(0) = 1 , *1024 = 1024
    sin(0) = 0 donc 0 + 0 + 0 + 29 = 29
    1024 + 29 = 1053 / 1053 = 1, on est bon avec t à 0

    -- avec t = 2*Pi/3 = 2,0944
    cos(2.0944) = 0.999332 , * 1024 = 1023.316
    sin(2.0944) = 0.036546 , sqr = 0.00133561 , *512 = 0.68383232
    sqr * sqr * 128 = 0.000228333
    sqr * sqr * sqr * 64 = 0.0000001524821
    les 4 résultats précédents + 29 = 1053.00006 et ça, / 1053 = 1.00000000.... , on n'est pas bon,
    Une idée ?

    Donc, quand tu écris "qui doit vérifier", il faut que je lise, que je comprenne "dont le boulot va être de faire ..."
    Mais je ne sais pas à quoi ça peut bien me servir, hélas.

    Et qu'est-ce qu'on fait de ces 3 corrections pifométriques ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case k of
      1: r:=round(fx_jpt(Phi - Alpha, courbe) * 0.95);
      2: g:=round(fx_jpt(Phi - Alpha, courbe) * 0.9);
      3: b:=round(fx_jpt(Phi - Alpha, courbe) * 0.85);
    end;
    Tu penseras à me trouver 4 étiquettes ?

    Nom : 234.gif
Affichages : 22
Taille : 56,9 Ko
    Comm' d'hab, ne pas tenir compte de la qualité douteuse des dégradés (où l'on voit quand même que la largeur du jaune varie), liée à la compression gif ; mais j'ai fait un gif, qui permet de bien voir les variations des courbes.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #203
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Citation Envoyé par Jipété Voir le message
    ... Merci pour la formule, je l'ai mise en œuvre en une poignée de secondes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    CASE idx OF
          1: w := (   2*Cost +   1)/3;
          2: w := (   8*Cost +   4*Sint2 + 1)/9;
          3: w := ( 128*Cost +  64*Sint2 + 16*Sint4 +  7)/135;
          4: w := (1024*Cost + 512*Sint2 +128*Sint4 + 64*Sint6 + 29)/1053;
        END;
    C'est beau, c'est propre, et c'est totalement incompréhensible pour moi, un véritable charabia dans une langue étrangère, désolé …
    Si Honorin des Meldeuzes, membre du Conseil d'Administration d'une prestigieuse entreprise honore de sa présence l'une des séances de ce Conseil, et si aucun autre participant ne relève des mêmes initiales, alors le (ou la) secrétaire de séance pourra annoter HdM les interventions du quidam en question, sans risque de méprise ou d'ambiguïté.

    De même si le calcul d'une expression ne met en cause que la fonction Cos(t), ainsi que les puissances paires de Sin(t), alors ce n'est peut-être pas exiger un courage héroiïque que d'inviter à prendre la notation (Cost, Sint2, Sint4 ... etc).
    Et comme tu es parti sur une bonne idée, voici une variante adaptable à toutes les fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    CASE idx OF  1: BEGIN
                      s:= 1; IncR(s, 2*Cost )
                      w:= s/3
                    END;
                 2: BEGIN
                      s:= 1; IncR(s, 8*Cost), IncR(s, 4*Sint2);
                      w:= s/9
                    END;
                 3: BEGIN
                      s:= 7; IncR(s, 128*Cost); IncR(s, 64*Sint2); IncR(s, 16*Sint4);
                      w:= s/135
                    END;
                 4: BEGIN
                      s:= 29; Inc(s, 1024*Cost); Inc(s, 512*Sint2); Inc(s, 128*Sint4); Inc(s, 64*Sint6);
                      w:= s/1053
                    END  END;
    Citation Envoyé par Jipété Voir le message
    ... Ce qui me fait peur (ce n'est pas la première fois que je lis ça sous ta plume), c'est l'expression ... / ...
    C'est moi qui dois vérifier ?
    Bon, allez, courage, calculons :
    -- avec t = 0
    cos(0) = 1 , *1024 = 1024
    sin(0) = 0 donc 0 + 0 + 0 + 29 = 29
    1024 + 29 = 1053 / 1053 = 1, on est bon avec t à 0

    -- avec t = 2*Pi/3 = 2,0944
    cos(2.0944) = 0.999332 , * 1024 = 1023.316
    sin(2.0944) = 0.036546 , sqr = 0.00133561 , *512 = 0.68383232
    sqr * sqr * 128 = 0.000228333
    sqr * sqr * sqr * 64 = 0.0000001524821
    les 4 résultats précédents + 29 = 1053.00006 et ça, / 1053 = 1.00000000.... , on n'est pas bon,
    Une idée ?

    Donc, quand tu écris "qui doit vérifier", il faut que je lise, que je comprenne "dont le boulot va être de faire ..."
    Mais je ne sais pas à quoi ça peut bien me servir, hélas …
    1°) Tu n'a pas compris: ce sont les fonctions citées qui doivent présenter certaines propriétés, et tu n'es pas une fonction. .
    On te propose un ensemble de fonctions, qui vérifient à priori (sauf erreur de donnée)
    G(0) = 1 et G(2*Pi/3) = 0 .
    C'était pour t'aider à te familiariser avec ces objets que je rappelais leurs propriétés.
    Les relations sont exactes; c'est évident dans le cas de (t) nul, et aussi pour la valeur suivante pour laquelle on a:
    Sint = 31/2/2 ; Sint2 = (31/2/2)2 = 3/4 ; Sint4 = (3/4)2 = 9/16 ; Sint6 = (3/4)3 = 27/64 ;
    w = (-1024/2 + 512*3/4 +128*9/16 + 64*27/64 + 29)/1053 = (-512 + 384 + 72 + 27 + 29)/1053 = 0;

    2°) Les écarts observés doivent rester de l'ordre de la précision assurée par le processeur ("epsilon machine"= 2-63 ~ 1E-19 pour le Pascal), soit 18 ou 19 chiffres (en tenant compte du cumul des arrondis).
    C'est donc gâcher le calcul que de se limiter timidement, comme tu l'as fait, à 5 ou 6 chiffres significatifs.
    Il fallait prendre soit les relations rigoureuses (voir plus haut), soit sin(120°) ~ 0,8660254037844386468 .
    Ma calculatrice, qui travaille sur 14 chiffres, donne
    W1 = W2 = W3 = 0 mais W4 = -1.5E-14 , ce qui reste cependant tout à fait acceptable.

    Citation Envoyé par Jipété Voir le message
    ... Et qu'est-ce qu'on fait de ces 3 corrections pifométriques ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case k of
      1: r:=round(fx_jpt(Phi - Alpha, courbe) * 0.95);
      2: g:=round(fx_jpt(Phi - Alpha, courbe) * 0.9);
      3: b:=round(fx_jpt(Phi - Alpha, courbe) * 0.85);
    end;
    Aucun avis, ces variantes relèvent d'un choix personnel.
    L'idée d'un palette dont les nuances dépendent de 3 paramètres pourrait être étudiée, mais cela fait une digression supplémentaire qu'il vaudrait mieux étudier sur un autre forum; et les fonctions à plateau employées ici me paraissent peu adaptées.

    Citation Envoyé par Jipété Voir le message
    ... Tu penseras à me trouver 4 étiquettes ?

    Nom : 234.gif
Affichages : 22
Taille : 56,9 Ko
    C'est une suite de fonctions quasi-constantes au voisinage de l'origine, à l'ordre (2n) près (voir #199)
    Ce sont des développements à l'ordre 0, 2, 4, 6 (d'après le plus fort exposant du terme en sintn).

    PS: certaines de tes palettes apparaissent contaminées par des stries verticales: n'aurais-tu pas encore logé un tableau de 24 couleurs à l'intérieur de ton algorithme ? Cela n'aurait ici aucune raison d'être !


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  4. #204
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Bonjour,

    Merci de ces 200 pages de conversations échevelées et dantesques, j'en retiens une chose, datée d'hier (la nuit porte conseil, hé oui...) :
    Citation Envoyé par wiwaxia Voir le message
    L'objectif de la palette est en principe de présenter une gamme de couleurs pures, dont une composante au moins est nulle, et l'autre maximale:
    Min(r, v, b) = 0 ; Max(r, v, b) = 255 .
    Vu que je suis complètement largué pour tripoter les maths pointues, je vais faire l'inverse : je vais composer d'une manière très simple une palette absolue avec les 16 millions de couleurs pures (comme on l'avait vu il y a qq années déjà), et tant pis pour les artefacts pas beaux : une note à côté de la palette l'expliquera.
    Après tout, on peut avoir un grand nombre de couleurs qui vont rendre l'ensemble très moche, mais en n'en sélectionnant que deux ou trois pour faire un boulot précis, ça va rendre bien.

    Parce que sinon, dans trois mois on est encore là, sans voir le bout du tunnel, or j'aimerais bien faire un peu avancer le RYB en cercle !, ce qui était le but à l'origine, avec l'envie de le rendre beau. Mais si ce n'est pas possible, si c'est incompatible avec la notion de "palette pure", il faut savoir jeter l'éponge et faire avec ce qu'on a.
    Après tout, "à l'impossible nul n'est tenu" et zou !


    Là, je suis en train de me battre avec ta matrice qui, si elle fonctionne bien (je vais conserver la fonction "1", la plus simple), est épouvantablement lente à la peinture des pixels. C'est lié à l'accès aux pixels, pas à la matrice, rassure-toi.
    Il va sans doute falloir que je la pivote de 90 ° si je veux speeder cette peinture, et c'est compliqué aussi (bon, pas autant que les sinus qui montent sur la chaise pour sauter sur le cosinus, et en plus je contrôle, donc ça va ).

    J'y retourne, et je vous tiens au courant, quand même.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #205
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Citation Envoyé par Jipété Voir le message
    ... Parce que sinon, dans trois mois on est encore là, sans voir le bout du tunnel, or j'aimerais bien faire un peu avancer le RYB en cercle ! ...
    Tu as toi-même orienté l'échange vers les dégradés (noir/couleur/blanc), puis vers la palette complète (RVB) (168)- le fil commun étant l'évitement de raies anormalement brillantes. Je trouvais le chemin un peu long, mais instructif.

    Citation Envoyé par Jipété Voir le message
    ... Là, je suis en train de me battre avec ta matrice qui, si elle fonctionne bien (je vais conserver la fonction "1", la plus simple), est épouvantablement lente à la peinture des pixels ...
    La fonction F1 produit les couleurs intermédiaires les plus moches, et ne donne pas l'orangé que tu recherchais !
    Tu devrais garder l'une des deux fonctions suivantes (F2 ou F3).

    La lenteur de l'exécution, dont tu as déjà parlé, m'intrigue un peu ... Comment Free Pascal et Lazarus peuvent-ils apparaître aussi poussifs ? Tu devrais en parler à des intervenants qui connaissent bien ces logiciels.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  6. #206
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par wiwaxia Voir le message
    La fonction F1 produit les couleurs intermédiaires les plus moches, et donne pas l'orangé que tu recherchait !
    Tu devrais garder l'une des deux fonctions suivantes (F2 ou F3).
    C'est noté. Je verrai quand j'y serai.

    Citation Envoyé par wiwaxia Voir le message
    La lenteur de l'exécution, dont tu as déjà parlé, m'intrigue un peu ... Comment Free Pascal et Lazarus peuvent-ils apparaître aussi poussifs ? Tu devrais en parler à des intervenants qui connaissent bien ces logiciels.
    C'est l'accès aBitmap.Canvas.Pixels[x, y] := aColor; qui est dramatique, par construction interne.
    C'est comme ça et on ne peut rien y faire.
    Pour les petites images ça passe, mais par exemple pour passer de 1 à 2 ou 3 ou 4, ça prenait 5 à 7 secondes, à la louche, donc tester les 4 fonctions à la suite, ça fait pleurer.

    Une fois la cuisine au point, il faut virer ces Canvas.Pixels et passer par les pointeurs, Scanline, et ce genre de choses, et là c'est instantané ou presque.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #207
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par Jipété Voir le message
    Une fois la cuisine au point, il faut virer ces Canvas.Pixels et passer par les pointeurs, Scanline, et ce genre de choses, et là c'est instantané ou presque.
    2 h et demie plus tard,
    à gauche 2 secondes avec les pixels, à droite 10 fois moins avec les pointeurs :
    Nom : 1988.png
Affichages : 15
Taille : 10,8 Ko Nom : getlinestart.png
Affichages : 15
Taille : 10,0 Ko

    (je n'ai jamais creusé, mais il me semble que trafiquer avec les pixels génère un refresh à chaque fois, alors qu'avec les pointeurs on verrouille l'accès, on modifie ce qu'il faut, et on déverrouille.)

    Je n'explique pas (pas encore) la différence d'intensité pour la courbe verte…

    Bon, allez, mettre tout ça au propre et attaquer le RYB.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #208
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par wiwaxia Voir le message
    Tu as toi-même orienté l'échange vers les dégradés (noir/couleur/blanc), puis vers la palette complète (RVB) (168)- le fil commun étant l'évitement de raies anormalement brillantes. Je trouvais le chemin un peu long, mais instructif.
    Une idée en fait surgir une autre, qui appelle des questions, donc des réponses, donc, oui, pour aller de Nice à Rome je passe par Le Havre, NY city, LA, Tokyo, Samarkande et on y est presque,

    Citation Envoyé par wiwaxia Voir le message
    La fonction F1 produit les couleurs intermédiaires les plus moches, et donne pas l'orangé que tu recherchais !
    Tu devrais garder l'une des deux fonctions suivantes (F2 ou F3).
    Mouais, tu as peut-être raison.

    Nom : 4fonctions.gif
Affichages : 15
Taille : 59,7 Ko

    Et entre F1 et F2 on ne pourrait pas en glisser une, maintenant que ma mécanique est super bien rodée, juste pour voir ?

    Je te laisse admirer les délais d'exécution dans la barre de titre, 20 fois plus vite que l'ancienne méthode, crois-moi que quand tu tiens la souris, ça change la vie !

    Bon, tout ça grâce à toi, ta patience, ta science, alors un énorme, un gigantesque merci !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #209
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Citation Envoyé par Jipété Voir le message
    ... Et entre F1 et F2 on ne pourrait pas en glisser une, maintenant que ma mécanique est super bien rodée, juste pour voir ? ...
    Non malheureusement, car il n'y a pas de nombre pair entre (2) et (4):
    F1(t) ~ 1 - K1*t2
    F2(t) ~ 1 - K2*t4
    Je te laisse admirer les délais d'exécution dans la barre de titre, 20 fois plus vite que l'ancienne méthode, crois-moi que quand tu tiens la souris, ça change la vie !

    Citation Envoyé par Jipété Voir le message
    ... Bon, tout ça grâce à toi ...
    Ravi que cela ait pu t'apporter quelque chose. Tu m'as fait découvrir la soustraction entre deux images bitmap, et conduit à écrire de nouveaux codes (qui n'ont pas tous été postés sur le forum).

    Un doute horrible persiste: toutes les palettes présentent des stries verticales

    Nom : JPT [2019-05-15].png
Affichages : 14
Taille : 6,2 Ko

    Est-ce résultat d'une hallucination, ou aurais-tu inséré dans ton algorithme le tableau des 24 couleurs ? Les fonctions dont tu disposes ici le rendent inutile, et les discontinuités de teinte (que l'oeil perçoit toujours) abîment la palette.
    ... Et en y regardant de près, il y a des détails vraiment compromettants:

    Nom : JPT [2019-05-15] Extrait.png
Affichages : 11
Taille : 1,0 Ko


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  10. #210
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par wiwaxia Voir le message
    Un doute horrible persiste: toutes les palettes présentent des stries verticales

    Nom : JPT [2019-05-15].png
Affichages : 14
Taille : 6,2 Ko

    Est-ce résultat d'une hallucination, ou aurais-tu inséré dans ton algorithme le tableau des 24 couleurs ? Les fonctions dont tu disposes ici le rendent inutile, et les discontinuités de teinte (que l'oeil perçoit toujours) abîment la palette.
    ... Et en y regardant de près, il y a des détails vraiment compromettants:

    Nom : JPT [2019-05-15] Extrait.png
Affichages : 11
Taille : 1,0 Ko
    Comme je l'avais répété au moins 255 fois, j'ai eu peur d'un débordement de byte et ne l'ai donc pas dit cette fois-ci : ces défauts sont liés à la compression gif, assez violente en termes de destruction des originaux…
    Donc je te rassure, les 4 images indépendantes sont parfaites.

    Citation Envoyé par wiwaxia Voir le message
    Non malheureusement, car il n'y a pas de nombre pair entre (2) et (4)
    Bien dommage, car on voit bien, grâce au gif, justement, que les croisements rouge-vert en haut à gauche sont assez proches en termes de position verticale dans l'image des courbes, concernant les fonctions 2, 3 et 4, alors que la 1 a son croisement isolé beaucoup plus bas, d'où ma demande, car visuellement on aurait largement eu la place d'avoir un croisement à mi-chemin entre celui de la F1 et celui de la F2.
    'fin bon, si ce n'est pas possible, on ne va pas encore se prendre la tête, on l'a assez fait comme ça.

    La suite à demain, et après, le passage en RYB (et il ne faut pas regarder Almodovar [désolé, je ne sais pas faire le o accentué de son nom] si on n'aime pas les images RYB parce qu'alors lui, c'est le champion pour ça ! Quelles images ! Quel festival !)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #211
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Citation Envoyé par Jipété Voir le message
    ... Donc je te rassure, les 4 images indépendantes sont parfaites ...
    Il n'y a que la foi qui sauve ...

    Citation Envoyé par Jipété Voir le message
    ... Comme je l'avais répété au moins 255 fois, j'ai eu peur d'un débordement de byte et ne l'ai donc pas dit cette fois-ci : ces défauts sont liés à la compression gif, assez violente en termes de destruction des originaux ...
    J'avais déjà constaté que certains procédés de compression altèrent la qualité des couleurs, mais de là à inverser l'ordre de luminosité des bandes ...
    Et ne consentant à croire qu'après avoir vu, comme l'apôtre Thomas, j'ai créé pour comparaison les versions png, gif et jpg du même original au format Bitmap:

    # PNG
    Nom : PalRVB_F1F2F3_PNG_50%.png
Affichages : 10
Taille : 1,3 Ko

    # JPG
    Nom : PalRVB_F1F2F3_JPEG_50%.jpg
Affichages : 9
Taille : 4,0 Ko

    # GIF
    Nom : PalRVB_F1F2F3_50%_GIF.gif
Affichages : 9
Taille : 30,2 Ko

    Aucune trace des précédentes dégradations. J'ai l'impression que tu lances un processus inutilement lourd et compliqué, que tu maîtrises mal, ou qu'il intervient une ancienne procédure que tu n'as pas mise à jour.

    Citation Envoyé par Jipété Voir le message
    ... 'fin bon, si ce n'est pas possible, on ne va pas encore se prendre la tête, on l'a assez fait comme ça.
    Il y a une autre possibilité, mais qui n'est pas encore au point ...

    Citation Envoyé par Jipété Voir le message
    ... et après, le passage en RYB ...
    Là aussi, pas de promesse inconsidérée ... On en entend suffisamment à la télé


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  12. #212
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Bonjour,
    Citation Envoyé par wiwaxia Voir le message
    Il n'y a que la foi qui sauve ...
    J'ai peut-être les yeux qui fatiguent…

    Citation Envoyé par wiwaxia Voir le message
    Aucune trace des précédentes dégradations. J'ai l'impression que tu lances un processus inutilement lourd et compliqué, que tu maîtrises mal, ou qu'il intervient une ancienne procédure que tu n'as pas mise à jour.
    Peut-être une piste :

    Concernant cette histoire de courbes en pointillés, j'ai l'explication (mais pas la solution).
    D'abord une image, qui montre bien ce qui se passe (me suis amusé à cliquer sur les 4 fonctions sans effacer la précédente) :

    Nom : points_absents.png
Affichages : 15
Taille : 8,3 Ko

    la loupe permet de bien voir ce que pointe la souris et, oui, il manque des données !

    Alors je suis allé dans la procédure de création de la matrice et j'ai loggé tout ce qui se passait, qui confirme l'image.
    Tout petit résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    w: 000 h: 000 r: 255 g: 000 b: 000
    ...
    w: 000 h: 255 r: 255 g: 000 b: 000
    w: 001 h: 000 r: 255 g: 003 b: 000 colonne suivante
    et c'est comme ça partout. w(idth) c'est ton Xm et h(eight) ton Ym.
    Par exemple, le point montré par le hotspot de la souris est environ à 50,50, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    w: 050 h: 049 r: 194 g: 143 b: 000
    w: 050 h: 050 r: 194 g: 143 b: 000
    w: 050 h: 051 r: 194 g: 143 b: 000
    ...
    w: 051 h: 049 r: 192 g: 146 b: 000
    w: 051 h: 050 r: 192 g: 146 b: 000
    w: 051 h: 051 r: 192 g: 146 b: 000
    et on voit bien que le rouge perd 2 et que le vert gagne 3,
    Il faut savoir que les valeurs r,g,b sont utilisées comme ordonnées pour colorier les points des courbes.

    (ce qui me fait penser qu'on pourrait très bien avoir une matrice avec une seule ligne de 360 points, puisqu'il n'y a pas de variations des valeurs de Ym dans [0..255] pour un Xm donné -- ou j'ai fait une catastrophe ?)

    Et il n'y a pas de Trunc !

    Tiens, si tu veux revoir, en espérant que je suis compréhensible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    PROCEDURE CalcMatrIm(La, Ha: uint; fx: uint; VAR Ma: Tab_Pix);
    CONST
      D_Pi = 2 * Pi;
      Pi2s3 = D_Pi / 3;
    VAR
      k: Byte;
      La1, Ha1, Xm, Ym: uint;
      Alpha, Phi, rl: Real;
      r,g,b: byte;
    BEGIN
      La1:= La - 1; Ha1:= Ha - 1;
     
      FOR Xm:= 0 TO La1 DO BEGIN
        rl := Xm / La;
        Phi := D_Pi * rl;
        FOR k := 1 TO 3 DO BEGIN
          Alpha := (k - 1) * Pi2s3;
          case k of
            1: r:=fx_jpt(Phi - Alpha, fx);
            2: g:=fx_jpt(Phi - Alpha, fx);
            3: b:=fx_jpt(Phi - Alpha, fx);
          end;
        END;
     
        FOR Ym:= 0 TO Ha1 DO begin
          Ma[Xm, Ym] := RGBtoColor(r,g,b);
          bmpD.Canvas.Pixels[Xm, Ym] := Ma[Xm, Ym];// bmpD avec un "D" comme "Dégradé" pour l'affichage
    //form8.memo1.Lines.Add(format('w: %.3d h: %.3d r: %.3d g: %.3d b: %.3d',[Xm,Ym,r,g,b]));
        end;
      END;
      //bmpD.SaveToFile(chemin+'bmpD.bmp');// dégradé ok
    END;
    et la fonction fx_jpt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function fx_jpt(t: Real; idx: uint): byte; inline;
    VAR
      Cost,Sint,Sint2,Sint4,Sint6: extended;
      w: Real;
    begin
      SinCos(t, Sint, Cost); // uses Math, entrée Float, 2 sorties Float
      Sint2 := Sqr(Sint); Sint4 := Sqr(Sint2); Sint6 := Sint2 * Sint4;
      w := 0;
      if Cost > -0.5 then
        case idx of
          1: w := (   2*Cost +   1)/3;
          2: w := (   8*Cost +   4*Sint2 + 1)/9;
          3: w := ( 128*Cost +  64*Sint2 + 16*Sint4 +  7)/135;
          4: w := (1024*Cost + 512*Sint2 +128*Sint4 + 64*Sint6 + 29)/1053;
        end;
      Result:= Round(255 * w)
    end;
    Pas plus que ce qu'on a déjà vu.

    PS : on devrait pouvoir simplifier le calcul de la matrice ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CONST
      D_Pi = 2 * Pi;
      Pi2sur3 = D_Pi / 3;
      D_Pi2sur3 = 2 * Pi2sur3;
      ...
    BEGIN
      La1:= La - 1; Ha1:= Ha - 1;
     
      FOR Xm:= 0 TO La1 DO BEGIN
        Phi := (D_Pi * Xm) / La;
        FOR k := 1 TO 3 DO 
          case k of
            1: r:=fx_jpt(Phi, fx);
            2: g:=fx_jpt(Phi - Pi2sur3, fx);
            3: b:=fx_jpt(Phi - D_Pi2sur3, fx);
          end;
      ...
    mais ça n'explique pas pourquoi il manque des données…

    Citation Envoyé par wiwaxia Voir le message
    Là aussi, pas de promesse inconsidérée ... On en entend suffisamment à la télé
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #213
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Je m'embrouille…

    Tu peux tout barrer de ma précédente réponse (sauf les optimisations de calcul), c'est normal qu'il manque des données (et donc des points sur les courbes, et donc des barres dans les dégradés [à ce propos, tu devrais regarder tes images des dégradés avec un colorpicker : tu serais surpris…]) : nous parcourons une palette sur 360 points quand elle devrait en avoir 1536, comme l'image que j'ai fournie il y a quelques jours (semaines ?) avec les courbes droites, que je redonne, réduite de moitié, et avec la petite erreur sur l'échelle horizontale (lire 256 512 768 1024 1280 1536) :

    Nom : rgb-repartition_rainbow-512.png
Affichages : 9
Taille : 25,4 Ko
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #214
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Nom : #212_Pointillés.png
Affichages : 11
Taille : 11,4 Ko

    Mais non, il ne manque aucune donnée ! Tu confonds les fonctions utilisées, fonctions réelles de variables réelles définissant la répartition des couleurs dans le plan, avec la représentation de leur graphe par un nombre fini de pixels ... En multipliant le nombre de points par deux ou par trois, tu obtiendrais une représentation quasi-continue.

    J'ai déjà signalé (#139) la séparation qui doit intervenir entre l'objet mathématique étudié, défini par des fonctions sur un domaine fixe, et l'image que l'on veut en donner, et dont les dimensions sont arbitraires.

    Voir les deux images quasiment identiques du même objet, de dimensions 400x400 et 401x401.

    Je ne peux pas poursuivre


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  15. #215
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par wiwaxia Voir le message
    Mais non, il ne manque aucune donnée ! Tu confonds les fonctions utilisées, fonctions réelles de variables réelles définissant la répartition des couleurs dans le plan, avec la représentation de leur graphe par un nombre fini de pixels ... En multipliant le nombre de points par deux ou par trois, tu obtiendrais une représentation quasi-continue.
    Non ! Je ne confonds rien : parce que quand je fais cracher dans un log les données au fur et à mesure qu'elles sont générées par tes fonctions, il en manque !
    Mais la raison est très simple, ta matrice est trop petite.

    Ça m'a pris 5 minutes pour créer ce qui suit, j'ai juste retouché la taille de la largeur de la matrice, la portant à 1536 (ainsi que les objets d'affichage, bien sûr), et là, tout va bien !
    J'ai tous mes pixels dans les courbes sinusoïdales :

    Nom : 4x1536.gif
Affichages : 12
Taille : 108,2 Ko

    ATTENTION ! C'est un gif, donc le dégradé en haut est pourri, démonstration :
    en haut un extrait de la copie d'écran en png du mode 1 :

    Nom : compar_png_gif2.png
Affichages : 11
Taille : 15,8 Ko

    en bas la même image une fois passée à travers la moulinette de création de gif, et je n'ai aucun contrôle sur le taux de compression, donc on fait avec et on admire les courbes du bas, dans l'image précédente (où j'ai encore joué à ne pas effacer les images précédentes), en espérant qu'elle va passer entière sur le forum (1536 c'est pas rien. Sinon je réduirais, on y perdra en qualité… EDIT : bon, ça passe, mais le fofo réduit l'affichage à la taille proposée par le navigateur, alors navigateur en plein écran ou "clic droit / enregistrer l'image sous..." pour la voir / l'avoir à 100 %)

    Moi aussi c't'aprème chuis pas trop là,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #216
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table

    Citation Envoyé par Jipété Voir le message
    ... Peut-être une piste :

    Concernant cette histoire de courbes en pointillés, j'ai l'explication (mais pas la solution).
    D'abord une image, qui montre bien ce qui se passe (me suis amusé à cliquer sur les 4 fonctions sans effacer la précédente) :

    Nom : points_absents.png
Affichages : 15
Taille : 8,3 Ko

    la loupe permet de bien voir ce que pointe la souris et, oui, il manque des données !

    Alors je suis allé dans la procédure de création de la matrice et j'ai loggé tout ce qui se passait, qui confirme l'image.
    Tout petit résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    w: 000 h: 000 r: 255 g: 000 b: 000
    ...
    w: 000 h: 255 r: 255 g: 000 b: 000
    w: 001 h: 000 r: 255 g: 003 b: 000 colonne suivante
    et c'est comme ça partout. w(idth) c'est ton Xm et h(eight) ton Ym.
    Par exemple, le point montré par le hotspot de la souris est environ à 50,50, donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    w: 050 h: 049 r: 194 g: 143 b: 000
    w: 050 h: 050 r: 194 g: 143 b: 000
    w: 050 h: 051 r: 194 g: 143 b: 000
    ...
    w: 051 h: 049 r: 192 g: 146 b: 000
    w: 051 h: 050 r: 192 g: 146 b: 000
    w: 051 h: 051 r: 192 g: 146 b: 000
    et on voit bien que le rouge perd 2 et que le vert gagne 3,
    Il faut savoir que les valeurs r,g,b sont utilisées comme ordonnées pour colorier les points des courbes ...

    Et il n'y a pas de Trunc !
    ... mais ça n'explique pas pourquoi il manque des données …
    Les pointillés n'ont rien de gênant, ni d'inesthétique: les graphes obtenus représentent correctement les variations conjointes des fonctions étudiées.
    Leur présence vient du couplage du tracé des points des 3 courbes avec celui des traits verticaux constituant la palette, et de l'exécution de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR x:= 0 TO (Largeur - 1) DO ...
    L'inconvénient du procédé est de conduire à une densité linéïque de points variable, d'autant plus faible que la pente moyenne de la portion de graphe envisagée est plus forte: d = (1 + p2)-1/2 .
    Par exemple dans le cas de ton exemple, d = 0.365 : elle est par conséquent trois fois plus faible que sur un segment horizontal;
    Nom : #212 Pzente Graphe Pointillés.png
Affichages : 13
Taille : 4,2 Ko
    Pour obtenir une représentation quasi continue des courbes, il eût suffi de programmer une boucle au moins 3 fois plus longue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CONST F = 3;     // ou 5,7 ... mais pas un nombre pair !
    FOR j:= 0 TO (F*Largeur - 1) DO
      BEGIN
        <Tracé des points des 3 courbes>          
        IF (j MOD F=0) THEN <Tracé du trait vertical de la palette>
      END;
    Les données ne sont donc en rien lacunaires: c'est le traitement graphique qui est en cause, et que l'on peut modifier.

    Et l'argument selon lequel la matrice est trop petite ne tient pas:
    Citation Envoyé par Jipété Voir le message
    ... parce que quand je fais cracher dans un log les données au fur et à mesure qu'elles sont générées par tes fonctions, il en manque !
    Mais la raison est très simple, ta matrice est trop petite ...
    Une matrice plus grande, mais de même rapport (H/L), montrerait les mêmes dentelles.

    PS: Au fait, par quelles instructions consultes-tu les journaux (les logs, c'est bien cela ?) et retrouves-tu l'ensemble des valeurs affectées aux variables (w, h ... etc) ?


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  17. #217
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Bonjour,
    Citation Envoyé par wiwaxia Voir le message
    Les données ne sont donc en rien lacunaires: c'est le traitement graphique qui est en cause, et que l'on peut modifier.
    Et pourtant, quand je logge, j'ai ça (presque le début du log, il manque juste les 255 premières lignes, strictement identiques à celle qui est dessous, à l'incrémentation de h près) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    w:000 h:255 r:255 g:000 b:000 // on termine la colonne 0, la première à gauche et on est tout en bas (h à 255)
    w:001 h:000 r:255 g:003 b:000 // on attaque la colonne suivante (w à 1), on commence en haut (h à 0)
    Et on voit bien que le vert passe de 0 à 3, ce qui fait des trous dans l'objet d'affichage.

    Je n'ai pas encore fait de tests avec ta multiplication par 3, pour le moment je me bats avec la transformation du carré de dégradés vers un cercle, et ça me bouffe 4 pixels à droite et 4 en bas.
    Pourtant, c'est strictement le même code que celui dont on avait causé il y a 3 semaines environ.


    Pi après faudra que je mette en place le dégradé blanc->couleur->noir, qui ne va pas se faire tout seul...

    Citation Envoyé par wiwaxia Voir le message
    PS: Au fait, par quelles instructions consultes-tu les journaux (les logs, c'est bien cela ?) et retrouves-tu l'ensemble des valeurs affectées aux variables (w, h ... etc) ?
    dans la procédure CalcMatrIm, en bas, dans la "fabrication" de la matrice, je squatte la boucle pour créer au passage un TBitmap, utilisé pour afficher le dégradé et tant qu'à y être, j'y récupère aussi les datas toutes fraîches, comme les œufs sortis du cloaque de la poule,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        FOR Ym:= 0 TO Ha1 DO begin
          MaLI[Xm, Ym] := RGBtoColor(r,g,b);
          bmpD.Canvas.Pixels[Xm, Ym] := MaLI[Xm, Ym];
    form8.memo1.Lines.Add(format('w:%.3d h:%.3d r:%.3d g:%.3d b:%.3d',[Xm,Ym,r,g,b]));
        end;
    Tu devrais pouvoir faire la même chose avec ton Pascal à toi, la mise en forme s'appuie sur la commande Format('chaîne_commentaires_et_formatage',[datas]);.
    Le formatage s'appuie ici sur %.3d, qui signifie affiche-moi des données numériques simples ("d"), en utilisant 3 octets pour la place et avec des zéros si la data est absente (le point).

    Ah, j'ai renommé la matrice en MaLI pour la distinguer d'un autre essai avec MaIL, étant entendu que "L" signifie pour moi (et pour tout le monde) "Largeur" et "I" comme "Intensité (lumineuse)" puisque c'est à ça que ça va me servir pour dessiner les pixels.
    Tiens, j'aurais pu l'appeler "N" comme Niveau, aussi.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  18. #218
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Citation Envoyé par Jipété Voir le message
    pour le moment je me bats avec la transformation du carré de dégradés vers un cercle, et ça me bouffe 4 pixels à droite et 4 en bas.
    Pourtant, c'est strictement le même code que celui dont on avait causé il y a 3 semaines environ.


    Pi après faudra que je mette en place le dégradé blanc->couleur->noir, qui ne va pas se faire tout seul...
    Point 1 réglé, défaut généré par une stupidité interne à un composant Lazarus que j'ai utilisé pour gérer un ensemble de sous-composants, et dont la largeur non documentée mettait sa pagaille.

    Point 2 réglé en 10 minutes, grâce aux nombreuses briques qui parsèment le chantier, et donc

    Nom : Capture1.png
Affichages : 6
Taille : 46,9 Ko

    Nom : Capture2.png
Affichages : 7
Taille : 139,8 Ko

    Attention, ce n'est encore que du RGB, avant d'aller plus loin j'ai un peu beaucoup de ménage à faire, le test de la multiplication par 3 (ou le passage à une matrice de 1536 de large), mais dans l'ensemble, c'est très satisfaisant !

    Au prix de gouttes grosses comme le point, mais bon, on n'a rien sans rien, c'est bien connu,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #219
    Membre expérimenté

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 903
    Points : 1 743
    Points
    1 743
    Billets dans le blog
    5

    Par défaut

    le test de la multiplication par 3 (ou le passage à une matrice de 1536 de large)
    Non. Les dimensions de la matrice et de l'image sont indépendantes de la subdivision opérée pour le calcul; pour chaque couleur, tu as 3 fois plus de points à porter que de barres verticales dans la palette.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  20. #220
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 178
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 178
    Points : 11 531
    Points
    11 531

    Par défaut

    Les grands esprits se rencontrent.
    Tu postes ça (que je ne comprends pas trop) :
    Citation Envoyé par wiwaxia Voir le message
    Non. Les dimensions de la matrice et de l'image sont indépendantes de la subdivision opérée pour le calcul; pour chaque couleur, tu as 3 fois plus de points à porter que de barres verticales dans la palette.
    pendant que j'étais en train de rédiger ça :
    Avant d'aller plus loin, il ne serait pas plus simple de passer la largeur de la matrice à 1536 ?
    1536 car c'est 256 x 6 et 256 de large car on va avoir 256 valeurs par teinte et il y en a 6 : 3 primaires et 3 secondaires, on retombe sur le schéma déjà fourni des droites qui passent de 255,255 à 0,0.

    Nom : rgb-repartition_rainbow-512.png
Affichages : 12
Taille : 25,4 Ko
    (lire 256 512 768 1024 1283 1536)

    Pourquoi dis-tu 3 fois plus de points que de barres verticales ?
    Relis ce que j'ai écrit ci-dessus, regarde à nouveau mon test rapide d'hier midi,
    Nom : 4x1536.gif
Affichages : 12
Taille : 108,2 Ko
    (ça ne se voit pas à cause de l'affichage dans le forum mais cette image fait 1536 de large),
    tous les essais RGB que j'ai faits depuis que j'ai le nez là-dessus (2016-17) se sont toujours basés sur du 768 de large (car 1536, faut des grands écrans, en dév ç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, car mine de rien, souviens-toi, j'étais parti d'une map de 24 couleurs, soit 24 barres verticales et ma foi, ça fonctionnait.
    Ce qui compte c'est les 256 niveaux en hauteur.
    En largeur, je n'ai pas fait de tests mais je suppose qu'on pourrait envisager de démarrer à 3 barres, une rouge une verte et une bleue et demander (gentiment !) aux fonctions de gradient de faire le boulot.

    EDIT :
    Et tiens, ça ne m'aura pris qu'une poignée de secondes, je suis reparti du projet d'hier (gif ci-dessus) avec la matrice à 1536 et les deux objets d'affichage à 1536 de large également, je me suis contenté de ramener leur largeur à 512 et de rajouter deux instructions de redimensionnement pour chacun des deux objets d'affichage sans toucher à la matrice et le résultat fut tellement concluant que j'ai poussé le bouchon à simplement changer 512 par 256 puis, vicieux comme pas deux, à descendre à 128, résultat : it works ! Avec une matrice à 1536 !
    Comm' d'hab', gif = dégradé à la rue...

    Nom : 512-256-128.gif
Affichages : 10
Taille : 37,6 Ko

    Ah mais !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/06/2007, 11h40
  2. [SQL] calcul de plusieurs variables dans une table
    Par kaolivier dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53
  3. Etat bloqué par une table
    Par aujero dans le forum Access
    Réponses: 4
    Dernier message: 06/02/2006, 17h53
  4. Réponses: 12
    Dernier message: 21/10/2005, 14h35
  5. Réponses: 4
    Dernier message: 13/10/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo