(Presque) Couleurs générées automatiquement

Le 8 mars, j'ai eu une implémentation de dessin automatisé de surfaces avec des splines - pourquoi ne pas écrire un article avec des couleurs.

Il s'est avéré quelque chose comme ceci: il



y aura plus sous la coupe, prenez soin du trafic.

L'algorithme qui fait des courbes cubiques a été décrit précédemment . Ici, nous allons essayer de l'appliquer pour obtenir quelque chose de floral. Le seul problème est de savoir comment sélectionner les données d'entrée.
Les données d'entrée sont un ensemble de points avec des coordonnées dans un espace tridimensionnel et un ensemble de connexions entre eux, de sorte que topologiquement cette conception devrait être équivalente à une boîte, comme celle-ci:



(à la fin, cela devrait être comme ça :)



Pour que les surfaces cubiques tendues sur le noyau ressemblent à une fleur , il faut disposer les points symétriquement sur les cercles circonscrits autour du centre de la fleur. Pour résoudre ce problème, une variante de la «recherche en largeur d'abord» a été appliquée.

Attribuez à tous les points de poids. Tout d'abord, nous attribuons les poids 0 et 1 aux points extrêmes (deux poids identiques ne doivent pas être proches). Ce seront les bords des «pétales», 0 - les plus éloignés, 1 - les plus proches (les «pétales» sont entre guillemets, car il n'y a pas de division en pétales en tant que telle). Pesez davantage en attribuant le poids n + 2 aux voisins non pondérés avec le poids n.

Boîte pondérée:



Ensuite, sélectionnez au hasard la distance r du centre de la fleur pour chaque catégorie de poids.
La logique est la suivante: plus le poids est important, plus le point doit être rapproché du centre et les inégalités doivent être comblées:

r0>r2>r4>...>r2n;  r1>r3>...>r2n+1;  r0>r1


où r est la distance entre le centre de la fleur et les points avec le poids correspondant. Même les poids sont responsables de la partie centrale du «pétale», les poids impairs sont responsables des bords du «pétale».

Afin de disposer des points sur des cercles (et non sur des sphères), nous devons également sélectionner au hasard les coordonnées z de telle sorte que z_n <r_n (si le centre de la fleur est à la coordonnée zéro).



Dans l'étape suivante, nous devons connaître les angles pour l'emplacement des points sur le cercle:

eaveclet mn-àà proposletheavectàà propos tà proposheà avec àeavecà proposm n,tà propos αn=2π/mn


puis les coordonnées du i-ème point de poids n, s'il est pair:

Xje=rn2-zn2cos(jeαn)


yje=rn2-zn2sjen(jeαn)


pour impair:

Xje=rn2-zn2cos(jeαn+αn/2)


yje=rn2-zn2sjen(jeαn+αn/2)


De plus, l'ordre dans lequel nous prenons les points est important - ils doivent être «voisins».



Après toutes ces manipulations, on obtient une structure en forme d'étoile sur laquelle des cannelures peuvent être tirées.

(vue de dessus, isométrie, splines)





De tels sépales peuvent être randomisés à 100 500, mais pour sélectionner ceux qui conviennent, pour faire plusieurs fleurs, pour sélectionner les couleurs et les paramètres de base mieux manuellement, par conséquent, la génération est semi-automatique.

(vue du logiciel d'assemblage)













Félicitations pour la Journée internationale de la femme à la belle moitié de la habrasociety! J'espère que tu étais belle.

All Articles