David Madore's WebLog: Comment superposer des cercles de façon symétrique ?

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #1978 [older| permalink|newer] / ↓Entrée #1978 [précédente| permalien|suivante] ↓

(vendredi)

Comment superposer des cercles de façon symétrique ?

Pour fabriquer ma petite animation mathématique de Noël (dont je voudrais d'ailleurs faire une version pour mettre sur YouTube — ajout : voilà, c'est fait), je me suis posé la question suivante, sur laquelle je continue à m'arracher les cheveux, et dont je suis assez stupéfait qu'il ne semble pas exister de solution pratique :

[Disques de couleur]Je veux dessiner, sur un fond neutre (disons, noir, mais peu importe) un certain nombre de disques de couleur, de façon qu'à l'intersection de n de ces disques la couleur soit donnée par la moyenne (ou, en fait, par n'importe quelle fonction raisonnablement symétrique) des couleurs de ces n disques. Le point important est qu'il ne soit pas possible de déterminer dans quel ordre les disques ont été dessinés.

L'idée est de faire ça en Canvas, SVG, ou à la limite en n'importe quoi de commodément programmable (Cairo, ImageMagick, que sais-je encore). L'exemple ci-contre a été calculé par un programme de mon cru (très malcommode et mal foutu).

Ça ressemble à de la transparence, mais je ne vois pas comment obtenir ce résultat (la symétrie entre les objets) avec le modèle de transparence (canal alpha) ni avec les modes de composition des différents outils évoqués. Il y a toujours une notion d'objet au-dessus et d'objet en-dessous, et si je rends l'objet du dessus partiellement transparent, il laissera apparaître le fond, alors que je veux qu'il occulte complètement celui-ci.

À la limite, je me contenterais bien du XOR comme opération pour les couleurs à l'intersection (ce que je veux surtout est que l'opération soit symétrique). C'est ce que j'ai essayé d'utiliser dans ma petite animation de Noël, mais le XOR utilisé par canvas (au moins chez Firefox et Chrome) a l'air d'obéir à des règles qui m'échappe (rouge xor vert = noir ? hein ?). [Ajout () : on me souffle que cette page explique assez bien comment fonctionnent les modes de composition standards — en l'occurrence de Cairo, mais ce sont presque un sur-ensemble de ceux de canvas — et notamment ce que fait le XOR.]

↑Entry #1978 [older| permalink|newer] / ↑Entrée #1978 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]