Quelques remarques supplémentaires :
Interface
Le curseur "Allonger le temps de traitement" pourrait éventuellement être décalé plus bas dans les paramètres. A discuter.
(Pour rappel, "Allonger le temps de traitement" va réduire les vitesses d'ordre 1, 2 3 et 4 et augmenter en conséquence le nb d'itérations, pour conserver une "Force" globale équivalente). Le but est d'augmenter le temps de calcul pour un effet plus propre.
Calcul de radius et radius_center (correctif)
Je me suis rendu compte d'une erreur dans mes calculs de radius et radius_center : ceux-ci doivent être entiers !
Si par exemple l'utilisateur choisit d'influer les détails de 1px à 2px (radius_min = 1 px, radius_max = 2 px),
on se retrouve avec :
La valeur critique qui doit être respectée, c'est le radius_min (car plus petit, et si l'utilisateur sélectionne 1px, il veut 1px, pas 0px ou 2px !).
On peut tolérer une marge d'erreur sur le radius_max (c'est bien moins grave, et l'erreur est proportionnellement inférieure à celle de radius_min
Il faut donc plutôt utiliser les formules suivantes :
Si radius_min = 0, alors :
Si radius_min > 0, alors :
où l'on comprendra que arrondi.sup est l'arrondi à la valeur supérieure.
Exemple : l'utilisateur choisit d'influer sur les détails de 3 à 8 pixels.
radius_center = arrondi.sup( (8+3)/2) = arrondi.sup( 5.5 ) = 6
radius = arrondi.sup( (8-3)/2 ) = arrondi.sup( 2.5 ) = 3
Le module diffusion et netteté influera donc en réalité sur les détails de 3 à 9 pixels.
En gros, on autorise (selon les valeurs choisies) une majoration de 1px sur le radius_max. ça ne devrait pas fondamentalement changer le résultat (de toute façon, il est impossible de sélectionner exactement de 3 à 8 pixels en mode avancé).
Interface
Le curseur "Allonger le temps de traitement" pourrait éventuellement être décalé plus bas dans les paramètres. A discuter.
(Pour rappel, "Allonger le temps de traitement" va réduire les vitesses d'ordre 1, 2 3 et 4 et augmenter en conséquence le nb d'itérations, pour conserver une "Force" globale équivalente). Le but est d'augmenter le temps de calcul pour un effet plus propre.
Calcul de radius et radius_center (correctif)
Je me suis rendu compte d'une erreur dans mes calculs de radius et radius_center : ceux-ci doivent être entiers !
Si par exemple l'utilisateur choisit d'influer les détails de 1px à 2px (radius_min = 1 px, radius_max = 2 px),
on se retrouve avec :
- radius_center = (2 + 1)/2 = 1.5
- radius = (2 - 1)/2 = 0.5
La valeur critique qui doit être respectée, c'est le radius_min (car plus petit, et si l'utilisateur sélectionne 1px, il veut 1px, pas 0px ou 2px !).
On peut tolérer une marge d'erreur sur le radius_max (c'est bien moins grave, et l'erreur est proportionnellement inférieure à celle de radius_min
Il faut donc plutôt utiliser les formules suivantes :
Si radius_min = 0, alors :
- radius_center = 0
- radius = radius_max
Si radius_min > 0, alors :
- radius_center = arrondi.sup( (radius_max + radius_min)/2 )
- radius = arrondi.sup( (radius_max – radius_min)/2 )
où l'on comprendra que arrondi.sup est l'arrondi à la valeur supérieure.
Exemple : l'utilisateur choisit d'influer sur les détails de 3 à 8 pixels.
radius_center = arrondi.sup( (8+3)/2) = arrondi.sup( 5.5 ) = 6
radius = arrondi.sup( (8-3)/2 ) = arrondi.sup( 2.5 ) = 3
Le module diffusion et netteté influera donc en réalité sur les détails de 3 à 9 pixels.
En gros, on autorise (selon les valeurs choisies) une majoration de 1px sur le radius_max. ça ne devrait pas fondamentalement changer le résultat (de toute façon, il est impossible de sélectionner exactement de 3 à 8 pixels en mode avancé).