Algorithme: la transformation de la fleur

Bonjour à tous,

Voici déjà un moment (presque deux mois!) que je n’avais plus rien ajouté dans l’escarcelle de mon déposoire. Ceux qui me connaissent savent qu’après les périples de la fin de ma première année comme professeur, est venu mon mariage et le voyage de noces. Ce dernier a bousculé d’ailleurs un peu mon agenda, puisque voulant y partir correctement, j’ai troqué quelques idées paranoïaques contre un D80.
J’ai donc gentillement gambadé dehors et photographié à tout va notamment la faune mais aussi la flore qui est à l’Ile Maurice d’une rare beauté et ce, même durant leur hiver.
Tout cela ne vous explique pas encore le lien avec le titre mais pourtant c’est bien ce rapprochement photographique avec les fleurs qui m’a rappelé les transformations d’image que j’avais débuté à coder et dont celle de la fleur faisait partie.

Nous voici donc avec une fleur dans les mains que nous allons émietter jusqu’au plus petit pixel…

L’idée

Créer une fonction intégrée à ma class image qui applique la transformation de la fleur à mon image courante

Le principe

Nous donnerons l’impression de morcellement en pétales en partir de l’algorithme du photomaton mais en appliquant à chaque pétale une transformation de sorte quelle soit à chaque fois l’image de sa voisine par une symétrie orthogonale admettant pour axe le côté commun aux deux miniatures.

Notre raisonnement et notre code ressemble donc à celui mis en œuvre précédemment. La principale difficulté repose dans la mise en place des symétries.
Lorsque je regarde mon exemple, je remarque que pour les deux lignes, l’image de droite est l’image par symétrie axiale de celle de gauche. De même, les deux pétales de la ligne du bas, sont les images par symétrie axiale de celle du haut.
Il convient cependant de corriger un peu mes dire. En effet, il NE s’agit PAS en réalité de pétales identiques. En effet, notre transformation a pour ambition d’être bijective afin, après moults applications à une même image, d’obtenir la même image où chaque pixel aura repris sa place.

La généralisation

Partant de ma généralisation de la transformation du photomaton, je n’ai pas eu trop de mal à transposer cette transformation prévue à l’origine pour un morcellement en 4 pétales, en une transformation bijective en (n, m) pétales. Il ne reste plus qu’à appliquer la bonne symétrie au bon pétale:
– si le pétale appartient à une ligne paire (0, 2, 4, …) alors on applique une symétrie d’axe horizontal,
– si le pétale appartient à une colonne paire (0, 2, 4, …) alors on applique une symétrie d’axe vertical.

On notera ainsi, que les pétales situés dans une ligne ET une colonne impaire ne changent pas, tandis que ceux situés dans une ligne ET une colonne paire subissent deux symétries orthogonales dont les axes forment un angle de 90°, ils subissent donc en réalité une rotation d’angle 180°!

Et parce que pour certaines images, il est plus joli que ce ne soit pas le premier pétale en haut à gauche qui soit fixe, j’ai également intégré un mode ‘reverse’ permettant de décaler les pétales dits ‘fixes’.

Le code

  1.     /*  Applique la transformation de la "fleur" à l’image actuelle avec un nombre de pétales réglable,
  2.         et un mode ‘reverse’ pour qui définit la première pétale */‘do’, $mode = ‘standard’‘reverse’) || ($tx%2 == 0 && $mode != ‘reverse’‘reverse’) || ($ty%2 == 0 && $mode != ‘reverse’‘do’

L’application publicitaire

Et pour mes détracteurs se demandant toujours à quoi je m’amuse, voici une application publicitaire de cette transformation de la fleur. Je vous laisse évidemment en devoir le fait de revenir à l’image d’origine 😉

Tags: , , , , , ,