Bruit fluide | Hadeel Alharthi | Skillshare
Recherche

Vitesse de lecture


  • 0.5x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 2x

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      0:47

    • 2.

      Qu'est-ce est-

      0:26

    • 3.

      Exemple : Quel est le bruit ?

      15:00

    • 4.

      Champ d'écoulement

      22:49

    • 5.

      Un agent

      6:47

    • 6.

      de nombreux agents

      7:51

    • 7.

      Bruit tridimensionnelle

      5:01

    • 8.

      Bruit statique

      9:10

    • 9.

      Différents pinceaux

      13:04

    • 10.

      Techniques de coloration

      3:29

    • 11.

      Enregistrer des images

      20:04

    • 12.

      Inspiration et d'autres informations

      1:28

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

544

apprenants

7

projets

À propos de ce cours

Ce cours vous apprendrez tout ce dont vous devez savoir sur la création d'un mouvement fluide dans le processus, la production d'œuvres d'art qui vous fera admirer. La fonction de bruit est utilisée par de nombreux artistes génératifs, mais l'ajout de votre propre toucher ou de couches d'images à l'image avec des paramètres variés. Nous vous go à la fonction de base afin de vous comprendre comment cela fonctionne ou nous allons en fonction d'autres.

Rencontrez votre enseignant·e

Teacher Profile Image

Hadeel Alharthi

Creative Coder and Artist

Enseignant·e

ABOUT

Hi! I'm Hadeel, and this is my humble digital abode. I'm a creative coder and artist whose sole passion is to learn all there is to know about generative art — or rather the digital art world in general. I'm curious by nature, and I love to share my findings. So if you're interested in learning generative art, this is the place to be. Welcome!

 

HOW TO NAVIGATE THE COURSES

If you're new to generative art, I recommend starting with either Back to the Basics or Intro to Generative Art. The latter is a much shorter course for anyone with too little time on their hands. Next, I'd go with Switches since that showcases my whole process, from ideating to the final design. The rest you can follow in any order since yo... Voir le profil complet

Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour tout le monde. Mon nom est plus lourd et c'est du bruit qui coule, bien sûr, qui plonge plus profondément dans le domaine de l'art génératif. Me présenter un algorithme glorieux connu sous le nom de Perlin noise. Le bruit est une fonction mise en œuvre par de nombreux journalistes, artistes sous une multitude de formes. Nous allons cependant nous concentrer principalement sur le mouvement dans un champ d'écoulement en comprenant d'abord la fonction de bruit dans le traitement, visualisant ses valeurs aller une animation simple comme un cercle oscillant et des rotations aléatoires lissées, qui aidera à la transition vers la génération animations fluides dans des œuvres statiques comme celle-ci, la formule apprendra peut présenter nombreux résultats en ajustant quelques paramètres tels que les échelles, taille de pas, ou même la géométrie utilisée . Donc, je vais vous conduire à travers chacun dans l'espoir de vous aider à comprendre comment le bruit fonctionne et finalement atteindre votre flux va. Allons donc dans les leçons et commençons à apprendre. 2. Qu'est-ce est-: La fonction bruit et aléatoire produisent des valeurs aléatoires. Seul le bruit est plus organique que aléatoire parce que les valeurs sonores sont influencées par leurs valeurs voisines, générant un mouvement fluide se produisant dans la nature comme les nuages, les cheveux et les courants d'eau. Syntaxiquement, la fonction de bruit prend 12 ou trois arguments, mais les valeurs résultantes seront toujours comprises entre 01. voir dans la leçon suivante quelques exemples pour visualiser les fonctions de bruit vers l'extérieur. 3. Exemple : Quel est le bruit ?: Avant d'entrer dans les trucs plus avancés, je veux vous expliquer ou vous voulez vous montrer comment nous allons utiliser la fonction bruit. Maintenant, la fonction bruit ne produit que des valeurs de 0 à un, peu importe les valeurs que vous y mettez. C' est très différent de la fonction aléatoire où vous mettez une valeur minimale et une valeur maximale et vous obtenez des valeurs flottantes entre ces nombres. Mais pour le bruit, quelle que soit la taille des valeurs que vous y mettez, il produira toujours une valeur de 0 à un. Nous devrons donc évoluer vers le haut, mais en même temps, nous devrons également zoomer dessus. Donc nous ne voulons qu'une partie de cette vague de valeurs de bruit parce que nous voulons un mouvement fluide très fluide, parce que cela va nous donner un mouvement très rigide. Si nous ne zoomons pas sur une partie de cela, je vais commencer par vous montrer l'exemple avec l'onde sinusoïdale. Et puis nous allons regarder l'exemple avec la fonction bruit car une onde sinusoïdale est beaucoup plus facile à visualiser car elle est très uniforme. Lorsque la fonction agréable est un peu plus difficile à déchiffrer s'il y a eu des changements ou non, ou si nous utilisons toujours la même onde ou non. D' abord, commençons par créer la vague. Donc je vais avoir besoin d'un point X et Y. Et puis à l'intérieur de la fonction de configuration, je vais dessiner la vague. La vague va passer de 0 à la largeur, puis elle sera au milieu ou au centre de la toile. Hauteur sage pour le x passera de 0 à la largeur. Mais alors pour les valeurs y, je vais utiliser la fonction sinus. Et puis je vais entrer à l'intérieur de celui-ci les valeurs x. Et je vais dessiner un sommet sur x et y. et je vais aussi initialiser y, hauteur divisée par deux. Nous devons commencer des formes et pour chaque sommet de se connecter à l'autre. Et maintenant, nous avons une très, très petite onde sinusoïdale. Maintenant, afin de l'augmenter, nous allons le multiplier par une hauteur. Parce que si je veux le mettre à l'échelle par un pour lui donner une amplitude qui est la hauteur de la vague. Disons que je veux lui donner une hauteur de dix. Maintenant, nous commençons à voir réellement la vague. Allons encore plus haut. Donc, je vais faire une centaine. Et vous pouvez voir que la vague n'a presque pas de largeur, c'est très étroit. Pour ce faire, nous devons zoomer dessus. C' est pour ça qu'on appelle ça les échelles et les temps. Je vais l'appeler largeur ici parce que c'est la largeur de la vague. Donc, afin de mettre à l'échelle la largeur de chaque vague, je vais diviser la valeur x ici par 1000. Donc nous voyons déjà que c'est beaucoup plus grand parce que nous avons augmenté la largeur de la vague. Et réduisons cela à dix à la place. Maintenant, nous commençons à voir la vague mieux. Donc maintenant que nous savons que nous avons bien la largeur des vagues et la hauteur des vagues, je vais ajouter deux valeurs de plus ici. Un culte pour lequel je vais lui donner une valeur de dix. Et puis je vais faire ce qu'on appelle des commutateurs de bord en hauteur. Et je vais lui donner une valeur de deux parce que c'est ce que j'ai testé avant. Donc je vais changer ça avec la largeur et la hauteur. Bon, maintenant on sait qu'on a une onde sinusoïdale d'une largeur de dix et d'une hauteur de deux. Maintenant, afin de faire cela au centre, directement au centre, je vais soustraire la largeur multipliée par la hauteur de pourquoi. Ce n'est pas nécessairement important, mais j'aime mettre ma vague au centre et il est beaucoup plus facile pour vous de visualiser comment la vague change si nous changeons les valeurs. Donc maintenant, nous pouvons voir que c'est au centre et maintenant les valeurs sont correctes. Et je peux voir la hauteur de deux ou une vague avec une hauteur de deux et une largeur de dix. Et si jamais nous voulons changer cela, disons 200, qui est la largeur à 100, vous pouvez voir que c'est beaucoup plus grand parce que la largeur est maintenant beaucoup plus élevée. Et si je le fais, disons 15, maintenant c'est deux vagues. Et si on en fait cinq, c'est beaucoup plus petit. Donc oui, ça dépend de la façon dont tu veux le faire. Donc, le point à emporter ici est que la largeur ou la valeur que vous mettez ici compétences jusqu'à la Vague. Donc, si on met 40, alors on augmente la vague. J' aime le voir comme un zoom sur la vague. Et puis plus cette valeur est grande où la hauteur sera alors plus forte que les vagues les plus abruptes seront. Donc si on devait bouger un cercle sur cette vague, et on peut le faire tout de suite pour que vous puissiez la voir. Mais avant que nous puissions faire ça, je vais sauver cette vague en classe d'appréciation. Parce qu'alors nous pouvons simplement dessiner la forme une fois à l'intérieur de la fonction de dessin. Vous pouvez donc utiliser la boucle for pour déplacer le cercle sur la vague et créer une forme de pièce. C' est très simple. Vous créez simplement la forme de classe P, puis vous l'appelez comme vous voulez. Et puis ici ou dans la fonction de configuration, vous l'initialisez en utilisant une forme propre. Et puis vous utilisez wave ou les méthodes à l'intérieur de la classe PCA au lieu de simplement utiliser la forme commencée qui est directement utilisée à l'intérieur du traitement. Et puis ici aussi, vous faites vague et utilisez le sommet à l'intérieur de la classe en forme de T à la place. Et maintenant, vous avez la forme qui n'apparaîtra pas à moins qu'il n'ait utilisé la fonction de forme. De cette façon, on peut l'utiliser ici. Donc je vais juste reculer, parce que nous ne voulons pas qu'il dessine, nous voulons qu'une animation ait fait. Et puis je vais appeler la vague. A l'intérieur de la fonction de forme ici. Et maintenant on peut le voir apparaître ici. Si je supprime l'arrière-plan, il va l'établir, si ça va être très gros. Et aussi vous voulez déplacer le cercle et nous ne voulons pas qu'il dessine. Ok, donc maintenant on peut dessiner le cercle au même point que le sommet. Et je vais donner la largeur du cercle de dix. Et puis ici, comme nous l'avons fait ici, nous avons augmenté x par un. Je vais augmenter x par un aussi. Et puis je vais augmenter y i, l'onde sinusoïdale, divisée par, qui est x divisé par la largeur, pour zoomer dessus et le rendre beaucoup plus grand. Donc, le mouvement est beaucoup plus lisse. Et puis nous le multiplions par une peau, alors donnez-lui une force à la force parce que maintenant elle devient plus raide. Plus, plus le nombre devient plus raide et le matériel pour le cercle plus long Fred le cercle pour monter et descendre. Et maintenant je vais faire aussi si x est supérieur à la largeur. Et je voulais revenir à 0 parce que je veux que le cercle bouge. Et puis une fois qu'il sort de l'écran et retourne ici. Donc maintenant je peux voir le cercle se déplaçant réellement à travers la vague et vous pouvez voir comment le mouvement est très lisse. Maintenant. Plus cela est élevé, la hauteur est qui est la force ou la pente de ces vagues. Le plus rapide pour les cercles de se déplacer car il doit atteindre tout cela et en même temps ou dans la même image, fréquence d'images. Passons maintenant aux exemples de bruit, puisque c'est ce que nous allons utiliser. Donc, il y a quelques choses que je vais changer parce que nous n'allons pas utiliser une largeur et une hauteur qui ne sont généralement utilisées qu'avec la fonction sinus parce que c'est très évident où se trouve la largeur et la hauteur. Mais pour le bruit, je vais changer la largeur à l'échelle parce qu'il fait zoom avant et augmente l'apparence de la vague. Et puis je vais appeler la hauteur la force. Parce que plus il est élevé, plus vous sortez de tout ce que vous utilisez la fonction de bruit, que nous allons l'utiliser avec angle. Ainsi, plus le ressort est élevé, plus la rotation est élevée ou plus vous obtiendrez de rotation. Et puis je vais changer chaque largeur à l'échelle. En fait, tu ne t'habitues pas. Cette partie. On va le faire différemment ici. Et la force pour la hauteur. Et aussi ici pour faire quelque chose de différent. Et puis cela va aussi être échelle dans les fours sont allés à cordes E. Ok, alors disons que ça a changé en bruit. Donc, quelle que soit la valeur d'Aaron va être de 0 à 1 et multipliée par la force, ça va la rendre plus grande. Donc ça va lui donner plus de force. Et je ne vais pas ajouter à cela, fonction de bruit fonctionne un peu différent. Et nous devons le changer ici aussi. Mais on va laisser tout le reste pareil. Et nous commençons la hauteur à la hauteur wyatt divisée par deux. Mais alors nous allons aussi devoir déplacer cela vers le bas à la place. Donc plus. Mais voyons en fait à quoi il ressemble maintenant et puis le changer plus tard. Ok, donc la raison pour laquelle je l'ai poussé vers le bas, donc j'ai dit y plus la hauteur divisée par deux. C' est parce que ça monte près du 0. Donc, je vais juste le déplacer en ajoutant hauteur divisée par deux sera ici et puis la même chose ici. Donc je le pousse juste ici parce que maintenant la force n'est que dix. Et ça va nous donner une valeur de 0 à 10. Comme vous pouvez le voir, la vague est très épaisse. Et la façon dont nous pouvons améliorer cela ou réellement regarder dans l'une de ces pièces est d'ajuster l'échelle. Ainsi, vous pouvez avoir besoin de très grands nombres de compétences afin d'obtenir des mouvements très lisses. Donc, si je vais un 100, vous pouvez voir que c'est beaucoup plus lisse et dehors, mais alors il n'y a pas de rotation ou il y a beaucoup de hauteur dans cette vague. Donc, je vais aussi augmenter cela. Et comme vous pouvez le voir, nous commençons à obtenir de belles formes ou de beaux mouvements fluides. Et si j'allais encore plus haut pour la rotation, alors j'aurais des mouvements de colline. Et cela peut produire de très beaux résultats si nous l'ajoutons à l'angle ou à la façon dont les formes tournent. Et c'est ce que nous allons utiliser lors de l'examen à venir. En outre, nous utilisons ici est un bruit unidimensionnel. Donc, nous n'utilisons qu'un seul argument à l'intérieur de la fonction de bruit lorsque vous pouvez réellement utiliser un bruit bidimensionnel, n'importe quel bruit tridimensionnel. Et oui, je ne vais pas le présenter maintenant. Cela va avoir son propre chapitre. Mais en ce moment, tout ce que vous devez savoir est que l'échelle zoome sur l'onde afin que vous puissiez voir, sorte que vous pouvez mieux la voir, a plus de mouvement fluide parce que maintenant nous passons de 0 à la largeur en utilisant seulement un morceau de l'onde. Quand, avant, quand il n'y avait que dix ans, nous avons traversé beaucoup plus. Et puis la force vous donne plus de hauteur. Maintenant, nous pouvons utiliser la fonction de base NOI pour lui donner la même forme encore et encore afin que nous puissions voir comment les choses se déplacent réellement. Donc si je le fais, je vais juste lui donner un 0. Tu peux lui donner n'importe quel numéro. Donc à chaque fois que je le fais maintenant, nous allons avoir la même vague exacte. Je veux que tu te concentres sur la première zone de la vague. Et je vais augmenter ça juste un peu. Comme vous pouvez le voir, c'est exactement la même façon de regarder, mais ça devient un peu plus grand parce que nous nous rapprochons de lui. Donc c'est en fait obtenir ce morceau de la vague, plus ce chiffre est grand. Donc si tu vas 30 ans, tu vas voir que ça va devenir plus gros. Et comme vous pouvez le voir, c'est exactement la même façon, mais c'est de plus en plus grand. Et si je fais 50, alors c'est la même vague exacte. Allons encore plus haut et t'achèterons un 100. Et vous pouvez voir que c'est exactement le même mouvement, mais c'est beaucoup plus grand parce que nous le mettons à l'échelle. Et si on augmente la force, tu verras que les pics vont s' élever et que les parties inférieures vont s'abaisser. Donc, cette partie va vraiment sortir de l'écran. Donc si j'y vais, disons 400. Et vous pouvez voir que c'est exactement la même façon, mais maintenant ça va plus bas ici et plus haut ici. Si vous êtes confus par ça, ne vous inquiétez pas. C' est la même formule exacte que vous jouez seulement avec l'habileté et la force. Et nous ne changerons pas autant, même en fonction de bruit bidimensionnel. Et dans la fonction d'agitation tridimensionnelle, ce ne sera que la même chose exacte, en ajoutant simplement une valeur y ou une valeur Z. Et nous le verrons dans le prochain chapitre. Et pour l'instant se concentrer sur ce que la compétence et la force en raison de l'onde de bruit. 4. Champ d'écoulement: Avant de commencer à créer des œuvres en utilisant du bruit, je veux vous montrer à quoi ressemble un champ de flux, parce que c'est essentiellement la base de tout ce que nous allons créer. Dans la section précédente, j'ai mentionné que nous allons utiliser le bruit pour l'angle de mouvement. Ainsi, au fur et à mesure que les formes se déplacent à travers l'écran, soit dans la direction des limites du canevas, mais en ajoutant l'angle ou en ajoutant du bruit à l'angle. Propriété de chacun de ces facteurs sont, chacun de ces agents est en fait la création de ce mouvement fluide. Je vais simplement créer une grille simple, puis vous montrer comment les angles se déplacent réellement sur l'écran en utilisant la fonction de bruit. Nous allons commencer par simplement utiliser un vecteur normal et ensuite nous allons intégrer la fonction de bruit pour voir comment les angles changent. Creed mouvement fluide à travers l'écran. Pour commencer, je vais enregistrer mon fichier parce que je veux importer ou vous voulez enregistrer dans le RL en créant un gang pour simplement enregistrer cela dans mon bureau, je vais l'appeler champ de flux. Et puis à l'intérieur de ce fichier, je vais créer un fichier de données et c'est ainsi que vous importez des images ou façonnez votre projet. Donc, je vais copier et coller mon fichier SVG dans l'état de l'ancien. Et je l'ai appelé juste la flèche. Et c'est une flèche très simple que j'ai créée dans Illustrator et que j'ai enregistrée en tant que SVG. Je vais lier cela dans la section des ressources. Pour que vous puissiez me suivre. Maintenant, pour créer le champ de flux, je vais créer une classe appelée champ de flux. A l'intérieur du champ de flux, je vais avoir besoin d'un vecteur p. Un vecteur b est plus facile à utiliser ici car il a déjà un angle intégré dedans. Mais dans les prochains chapitres ne vont pas utiliser un facteur clé. Je vais juste utiliser une position pittoresque et une position x et y. Mais puisque je veux créer une grille et je veux stocker les positions de chacun des vecteurs. Je vais le faire comme ça. Et je vais appeler ce champ. Donc, la majorité de ce code est très similaire à la nature du code. C' est juste la façon dont je crée la grille est un peu différente. Et je pense qu'à mon avis, beaucoup plus facile à comprendre juste parce que nous nous concentrons sur la façon dont nous créons une subvention dans la vie réelle. Plutôt que de se concentrer sur la résolution des notes et peut-être penser un peu en arrière. Donc, je vais juste utiliser des colonnes ou des lignes parce que c'est beaucoup plus facile pour moi d'expliquer. C' est beaucoup plus facile pour moi de comprendre aussi à mesure que je passe par là. Je vais juste faire des colonnes et des lignes pour le nombre de colonnes et de lignes. Et puis je vais aussi utiliser la largeur et la hauteur de la colonne pour calculer la largeur et la hauteur de chaque cellule à l'intérieur de ce grain. Et puis à l'intérieur du constructeur de cette classe. Je donne. Il paramètres, ce que l'on appelle les colonnes et les lignes. Parce que je veux que le nombre de colonnes et de lignes à l'intérieur de notre classe soit décidé ou programme moyen ici. Et puis ces colonnes seront égales. Le premier paramètre est les colonnes et les lignes de soulignement. Et au fait, tu peux appeler ça comme tu veux. Et puis la largeur de la colonne. En fait, je vais juste appeler ça silhouettes et Scala. Et puis comme il est beaucoup plus facile de comprendre que c'est la hauteur et la largeur des sons. Et cela va être la largeur de notre toile divisée par le nombre de colonnes. Et puis vendre la hauteur, jeune TV, la hauteur divisée par les rangées. Et puis un autre vecteur de champ. Nous allons créer un nouveau tableau vectoriel avec le nombre de colonnes, puis le nombre de lignes. C' est donc un tableau à deux dimensions. Et puis ici, je vais créer une fonction inet. Pour initialiser notre grille. Vous utilisez simplement un simple pour le gain de boucle de 0 aux colonnes, puis imbriqué pour la boucle pour créer les lignes. Donc ça va être les colonnes. Je suis inférieur au nombre de colonnes. Et enfin, on va l'appeler ici. Parce que je veux l'initialiser juste un à l'intérieur de la fonction de configuration ici. Et puis nous allons essayer ici, peut maintenant positionner notre flèche. Nous arrivons à ces positions. Et pour créer les positions, je suis juste en train de créer une position x, y position. Et pour l'exposition, les valeurs vont être multipliées par la cellule. Donc, chaque position de l'œil, chaque point de l'œil va signifier multiplier les cellules bêta avec. Donc le premier va être 0 multiplié benzoate, donc ça va être 0. Et puis le deuxième carré, la deuxième cellule va être une cellule multipliée par n cellule avec, donc peu importe les silhouettes ou si vous avez une silhouette de 100 basée sur le nombre de colonnes et de lignes, alors vous aurez un position de x à 100 et ainsi de suite et ainsi de suite. La même chose vaut pour j en ce moment est la hauteur de la cellule. Et puis je vais créer un vecteur P ici, un vecteur p local. Et je vais lui donner une position 00 pour, encore une fois, juste pour voir à quoi ça va ressembler. Et puis je vais stocker cette position où ce vecteur p à l'intérieur de notre champ pour être un tableau vectoriel à i, j pour les lignes aux points i. Et puis au point j, nous allons lui donner la valeur du vecteur ici. Donc, cela va fondamentalement aller pour le premier. Et puis il va faire une boucle à travers chaque rangée à l'intérieur de notre grille. Et cela va donner à chaque point ou chaque cellule la position en utilisant ce vecteur ici, une grille très simple. Et je vais vous montrer plus tard où nous allons utiliser l'axiome I ici. Maintenant, on vient de l'initialiser. Allons montrer. Donc, je vais créer une méthode d'affichage. Et ici, je vais faire la même chose pour la boucle. Et maintenant je vais dessiner ce qu'on veut. Ici. Ce sera la forme de flèche en utilisant les positions que nous venons de créer. Je vais utiliser une matrice de poussée. Et j'en ai parlé dans mon dos au cours de base. Si vous voulez en savoir plus sur push matrix et pop matrix. Mais je vais vous donner un bref de ce qu'ils font. Donc, fondamentalement pousser la matrice et la matrice pop crée un calque différent ou une matrice différente fondamentalement pour chaque forme. Donc, au lieu de déplacer les formes elles-mêmes, je vais simplement déplacer le calque entier. Je vais donc créer une couche pour la première cellule de la grille. Et je vais le positionner dans cette zone où je veux la première tuberculose cellulaire et ensuite je vais pousser une matrice différente sont une autre couche. Et je vais pousser toute cette couche à côté ou à la position de la deuxième cellule. Et puis nous ferons la même chose pour le reste du grain parce que nous utilisons la boucle for. Ainsi, il sera plus facile pour nous de positionner ou de former à la position 00 de chaque calque. En outre, vous devez utiliser la matrice push et la matrice pop parce que si vous utilisez traduire, faire pivoter et mettre à l'échelle en dehors de la matrice push et pop matrix va effectuer la même chose. Disons la traduction. Si nous utilisons la traduction pour déplacer les formes, elle utilisera la même traduction sur le même calque. Donc ça va bouger jusqu'à ce qu'il se déplace hors de l'écran. Parce qu'il va déplacer la position 00 du canevas, qui est le coin supérieur gauche vers la droite, puis vers le bas en fonction de la position des cellules jusqu'à ce qu'il se déplace vers la dernière cellule. Donc ça va être le même. Mais si nous utilisons Push Matrix et Pop Matrix, alors nous créons un calque différent et ensuite nous déplaçons ce calque vers la nouvelle position. Donc, il va déplacer le premier à 00 de la toile entière. Et puis il va déplacer la deuxième couche deux, la deuxième position, qui va être 0. Puis la largeur de la cellule et se déplaçant à travers les colonnes, puis à travers les lignes. Donc maintenant, je peux utiliser Translate en toute sécurité, sachant qu'il ne fera que la traduction sur cette couche. Donc je vais faire la même chose qu'on a fait ici. Et je ne vais pas utiliser chaque fois que je n'ai pas ici juste parce que je veux vous montrer quelques choses avant d'utiliser la position x et y. Donc ça va casser ça pour nous. Donc je vais juste faire que je multiplie par cellule avec dans le drain, multiplier par la hauteur de cellule. Et puis pour tourner, je vais être vecteur se dirige. Ce qui est fondamentalement l'angle en radians. Donc, le cap est essentiellement vous dire où se dirige le vecteur. C' est à peu près tout. Donc, pour obtenir la rotation de chaque vecteur ou où il se dirige, alors je vais juste utiliser INJ pour obtenir chaque vecteur. Et puis je vais utiliser la méthode du titre. Et vous pouvez imprimer ceci s'il veut voir les valeurs de celui-ci. Donc je vais mettre à l'échelle la forme aussi à vingt-cinq pour cent sa taille d'origine parce que c'est vraiment grand Eye comment va la mienne à 100 par 100 ? Et comme ma toile donne à être petite, 500 par 500, il est à peu près préférable de la réduire à 25%. Et puis je vais dessiner les formes. Donc, la forme s'appelle Flèche. Je ne l'ai pas vraiment créé. Donc je vais créer un ovaire ici en utilisant la clé. Je vais l'appeler. Et puis ici, je vais l'importer en utilisant la forme de charge. Il s'appelle Arrow dot SVG. Et puis je vais aussi désactiver Skype. Tu n'as pas à le faire. J' aime faire une habitude de désactiver le style de mes SVG juste au cas où je voudrais changer la couleur plus tard. Je ne suis pas confus pourquoi ça ne change pas. Donc maintenant, puisque nous avons désactivé les styles, je peux vraiment changer le poids du coup pour I fondamentalement Dustin tous ceux afin que vous n'ayez pas à vous soucier de suivre exactement. Vous pouvez jouer avec le poids et les couleurs du trait et tout cela. Et puis je vais arrêter la boucle dans la fonction de dessin parce que vous voulez juste dessiner la grille et vous montrer à quoi elle ressemble. Ok, maintenant je peux dessiner la forme ici. Il voit que c'est une flèche, mais il a besoin d'une position pour la forme. Je vais juste faire 00 pour l' instant et nous verrons comment résoudre ça plus tard si vous voyez des problèmes. Donc c'est à peu près tout. Avant de créer la subvention, brièvement, nous avons initialisé les positions de chaque vecteur, puis nous l'avons affiché. Voyons donc à quoi ça ressemble. Créons un champ de flux à partir de la classe. Donc, c'est notre instance et appelez-le juste champ de flux. Et puis je vais l'initialiser ici. Ainsi, par exemple, le champ de flux. Et on va lui donner le nombre de colonnes et de lignes. Je vais juste initialiser ce tableau ici. Les colonnes sont donc égales à 20. Et puis pour les rangées, et je vais secouer et lui donner 20 puisque nous avons un carré. Et laissez-moi réparer ça. Et maintenant à l'intérieur de la fonction de dessin, je vais juste faire l'affichage des points de champ de flux. Et ça devrait marcher maintenant. Ok, on n'a pas besoin de réparer les formes. Ça a l'air bien. Voyons maintenant comment nous pouvons changer la direction de ces flèches. Donc pour 00, il se déplace vers la droite. Et puis aussi à partir d'un pour X et 0 pour y, il va se déplacer vers la droite aussi parce que nous ne le déplaçons que. Ou c'est un peu comme à une vitesse d'un sur le côté droit. Et si je veux qu'il regarde vers le bas, j'en dis un. Et vous verrez que toutes les flèches se déplaceront en fait vers le bas. Et maintenant, si je veux qu'il bouge en diagonale à 45 degrés vers la droite et vers le bas. Je vais juste en écrire un pour X. Et maintenant, il bouge à un angle de 45 degrés. Et maintenant, si je voulais aller dans la direction opposée, sur l'axe des y, je vais faire un négatif. Donc, il est fondamentalement comme un mouvement n'importe quelle forme à travers l'écran en fonction de sa vitesse. Donc, si vous avez dit x plus un, alors nous savons que ça va se déplacer vers la droite et dire y moins un, ça va monter. Donc, si je veux aussi prendre cela à gauche, qui est la direction opposée ou l'inverse de la direction par défaut. C' est négatif. Et si je fais ça à 0, tu verras que ça va aller directement à gauche. Si nous changeons ceci en x et y, nous pouvons voir différentes rotations pour chaque vecteur en fonction de sa position. Alors vous pouvez voir que nous passons au taux, la majorité d'entre eux regardent vers la droite et alors que nous descendons, il diminue. Et puis en diagonale, ça va en fait en diagonale parce que c'est là la position des x et y sont en fait égales ou presque égales. Et donc ils dirigent vers un angle de 45 degrés. Et si je fais un x négatif, alors on inverse tout du côté droit au côté gauche. Et puis la même chose pour Y. et on aura une rotation différente aussi. Donc ça va aller vers le haut. Maintenant que nous comprenons cela, utilisons la fonction de bruit. Ça veut dire avant que c'était avant. Faites n'importe quoi, laissez-moi résoudre ce problème de traduction. Ainsi, comme vous pouvez le voir, la toile entière ou la plus grande toile où nous affichons notre champ de flux est au point zéro. Il y a des lacunes ici. Donc je vais juste le déplacer vers la droite de 12,5, puis vers le bas 12,5. La raison pour laquelle je fais cela, parce que chaque flèche est en fait un, un 100 pixels par un 100 pixels. Et puis les mettre à l'échelle par mai 25% ont de chacun d'eux 12,5, parce que 25% d'un 100 va répondre 25 pixels par 25 pixels pour chaque flèche. Et puis la moitié comme Dieu a 12,5. Et je veux juste bouger de moitié parce que je veux déplacer chaque flèche vers le centre de la cellule au lieu de dans le coin supérieur gauche de chaque cellule. Et je vais aussi réparer cela parce que maintenant je sèche à la position 00 de chaque. Mais puisque je déplace toute la toile vers la droite et vers le bas, je dois déplacer chaque forme vers le haut de la moitié de sa largeur, vers la gauche de la moitié de sa largeur. Nous pouvons donc le faire en utilisant la largeur des formes. Donc, si je fais la largeur de point de flèche négative divisé par deux, donc et se déplaçant vers le côté gauche par la moitié de sa largeur. Et puis je monte vers le haut. Je n'ai jamais dirigé ça. Ça devrait avoir l'air parfait. Et donc au lieu d'utiliser x et y, maintenant le bruit de Willie fonctionne pour l'angle, puis je vais au cosinus et sinus le positionnement du vecteur P. Parce que je vais juste appeler cet angle ou thêta, peu importe ce que tu veux appeler ça. Et je vais cartographier les valeurs. Le bruit, comme il l'a dit avant, le bruit. Quelles que soient les valeurs que vous mettez dans le bruit, il produira toujours un 0 ou une valeur de 0 à un. Et nous voulons cartographier cela de 0 à 10 à deux pi pour les angles. Dans l'exemple précédent, nous avons divisé les valeurs à l'intérieur de la fonction de bruit par l'échelle, puis nous avons multiplié toute la fonction de Noyce par la force. La seule différence ici est que nous ne allons pas multiplier par ses forces, mais nous allons juste cartographier les valeurs produites par la fonction de bruit, qui est de 0 à 1, pour évaluer de 0 à 2 pi et le char, les valeurs minimales et maximales des angles en radians. Donc je vais juste utiliser la fonction bruit comme on l'a fait avant. Je vais juste faire x divisé par échelle de bruit. Et puis je vais mapper cette valeur de 0 à un, qui sont les valeurs originales qui sortent de la fonction de bruit. À 0 à deux pi, qui est un cercle complet. Et puis je vais initialiser l'échelle de bruit ici. Je vais juste en faire 300. Et maintenant, je vais utiliser l'angle par ici. Donc, pour x, je vais utiliser l'angle du cosinus. Et puis pour y, je vais utiliser le sinus de l'angle. Et si je fais ça maintenant, nous verrons un mouvement fluide. Ce n'est pas si évident parce que c'est une fonction de bruit unidimensionnelle. Je vais donc vous présenter brièvement la fonction de bruit bidimensionnel. Donc, la seule chose que vous allez changer est d'ajouter d'autres arguments pour expliquer pourquoi. Et nous allons aussi le diviser par l'échelle de bruit. Lorsque nous exécutons ceci, nous constaterons que le mouvement est plus fluide parce que c'est un tableau bidimensionnel. Et comme vous pouvez le voir, tout se déplace vers le bas ici, puis il commence à tourner en fonction des fonctions de bruit. Donc, si vous changez l'échelle de bruit, donc disons faire 100, vous verrez plus de rotations. Et puis plus il est élevé, vous verrez moins de rotations parce que, comme nous l'avons vu dans l'exemple précédent, lorsque nous avons parlé de la mise à l'échelle du bruit ou de la mise à l'échelle de l'onde de bruit. À mesure que l'échelle augmente, les ondes deviennent en fait plus lisses parce que nous zoomons sur une partie ou sur le côté gauche de la vague. Ainsi, le mouvement ou le cercle utilisé pour se déplacer plus lentement se déplace à travers le premier morceau de la vague au lieu de déplacer vis plus de collines et des parties inférieures de la vague. Donc un gang de centaines pour produire plus d'angles. Et plus on va haut, ça va être plus lisse et des mouvements. Donc, comme vous pouvez le voir, les angles sont en fait plus lisses. Et parce que nous n'avons pas de graines ennuyeuses UTILISER différentes valeurs à chaque fois. Donc, si tu reviens à 300, on peut commencer à voir différents angles. Si vous mettez une purine au-dessus de ceux-ci, puis vous suivez l'angle de chacune de ces flèches. Vous constaterez que les cercles se déplacent en fait avec l'angle ou la direction des flèches. Cela seul peut créer de belles œuvres d'art. Si vous jouez avec la forme que vous utilisez, vous pouvez créer n'importe quel fichier SVG ou importe quel programme pouvant produire des SVG dans lequel il peut importer ici. Et jouer avec la vague que cela crée. Et aussi jouer avec le nombre de colonnes et de lignes. Parce que plus la valeur pour ceux-ci est élevée, vous allez voir les voies mieux car alors vous ne verrez pas autant les formes, mais vous verrez plus de mouvements ou une vague. Donc, si vous créez une ligne, par exemple, vous allez mieux voir la vague, la flèche que Daniel chaussures lorsque les utilisateurs dans la nature des exemples de code est beaucoup plus facile à voir la vague à travers parce que c' est juste une ligne. Ce n'est pas une flèche qui ressemble à ça. Vous pouvez créer la zone vous-même ou vous pouvez le trouver dans les ressources pour la nature du livre de code. Vous pouvez trouver tout le code dans la section GetHub. Vous pouvez donc étudier cela aussi parce que je pense que sa façon de le faire ou le processus, même si c'est différent, peut produire d'autres résultats. Parce qu'il vous montre aussi comment faire un agent ou un robot, suit les flèches au-dessus de celui-ci en regardant la valeur de la rotation et des mouvements et en le faisant suivre. Encore une fois, c'est un peu différent. Donc si vous avez des questions, faites-le moi savoir et peut-être que je pourrai vous aider avec ça aussi. 5. Un agent: Donc, pour ce chapitre va parler plus sur la façon de se déplacer en utilisant la fonction de bruit au lieu de simplement regarder la rotation comme nous l'avons fait auparavant. Maintenant, pour cette fois, nous n'avons pas besoin d'une classe pour le champ de flux, nous avons juste besoin d'une classe pour un agent qui va se déplacer à travers cette reine. On n'a pas vraiment besoin de voir la rotation. La seule chose dont l'agent a besoin pour se déplacer est de comprendre sa vitesse, décide qu'il doit l'être, et quel type de rotation vous obtiendrez en fonction de la fonction de bruit. Commençons donc par créer un nouvel onglet. Et puis à l'intérieur, je vais juste écrire ma nouvelle classe qui s'appelle aussi des agents. Ok, la première chose dont l'agent a besoin est une position x et y, des vitesses et la taille. Commençons par écrire le médecin et voir comment les choses se déplacent réellement en eux reprennent en incorporant taille et nous verrons où nous allons utiliser les vitesses. Encore une fois, il suffit de commencer par x et y. Donc x et y vont être utilisés de la même manière que nous avons utilisé dans le champ de flux. Mais cette fois, nous allons utiliser la vitesse pour déplacer nos agents sur le campus. Donc, je vais initialiser x largeur divisée par deux parce que je ne veux pas utiliser aléatoire. Et puis il se déplace hors de l'écran ou il va d'un bord d'entre eux vers l'extérieur parce que je ne vais pas vérifier les limites encore pour l'écran ou jamais en fait parce que je l'aime quand ils sortent de l'écran ou remplissent la page avec la conception. Et puis je vais faire y, x hauteur divisée par deux. Et j'ai ma largeur et ma hauteur AD 500 par 500. Et puis pour la vitesse, je vais lui donner une vitesse de, disons une. Ok, maintenant, ce flux est en mouvement et on va juste utiliser un poids de trait ponctuel. Et puis je vais dessiner mes x et y pour l'exécuter. Et on peut voir la classe de l'agent. Initialisons-le. Et nous n'avons pas besoin de paramètres. Je vais tout faire à l'intérieur de la classe et ensuite à l'écran. Et si je fais ça, on verra le point au centre. Super, maintenant il est temps d'utiliser les mises à jour. Dans la méthode de mise à jour, nous devrons déplacer X et Y en utilisant le cosinus et le sinus comme nous l'avons fait dans l'exemple du champ de flux. Donc, nous avons réellement initialiser le médecin P fondamentalement dit, donnez-moi un vecteur nu p à la position x au cosinus de l'angle y, sinus de l'angle. Donc, c'est fondamentalement la même chose ici, cependant, nous sommes en train de bouger. Donc je vais devoir ajouter le cosinus. La position de supplémentaire à la position précédente ou le point étalé, alors je vais faire la même chose. Maintenant, nous allons avoir besoin d'un angle. Donc je viens de créer et l'angle va fonctionner comme nous faisons la même chose que nous avons fait sur le terrain entier. X divisé par y divisé par l'échelle. Je ne vais pas utiliser une dimension, bidimensionnelle. Et puis nous en apprendrons plus sur le réseau tridimensionnel. Et puis je le multiplie par. Donc je vais les initialiser ici. Nous ne ferons pas d'échelle à 300. Disons dix. Maintenant, cela ne va pas correspondre parce que nous n'avons toujours pas ajouté la mise à jour ici. Donc je vais le faire, et si on doit commencer et maintenant on peut y ajouter la vitesse. Cela augmentera la vitesse de la lumière. Ainsi, trois, par exemple, vont être plus rapides. Et plus vite il est donné la mort musulmane parce que plus la vitesse trouble les mouvements parce qu'il n'y a pas d'espace entre les deux parce que vous bougez seulement 1 à la fois. Quand nous avons SP3. Cependant, il déplace les pixels de balayage à la fois, donc c'est plus délicat. Alors faisons-le, par exemple, et vous verrez qu'il a plus d'espace. Ceci est également vous pouvez utiliser à ce rythme et augmente v Dans ce devient coiffure. Donc maintenant, nous allons juste rester avec un et voir comment ça bouge réellement. Ainsi, comme vous pouvez le voir, les musulmans sont très doux parce que nous avons une échelle très élevée. Si je diminue ces 400, disons que nous allons voir plus de rotations parce que maintenant il passe par plus de points plus élevés ou plus de points dans la vague. Et si j'augmente ça, disons 50, tu verras plus de rotations. Alors pensez-y comme si ça vous donnait plus, obtenait la rotation, plus de force. Donc, il a le genre de dessus de main plus d'angles et ensuite nous pouvons ajouter une couleur à cela aussi bien. Alors, qu'est-ce que ça veut dire ? La même chose. Peut-être le changer à trois pour que vous puissiez voir un peu de changement de taille ici. Et puis je vais m'initialiser, lui donner un coup, de la couleur. Et c'est tout. C' est tout ce que vous devez faire pour obtenir toutes ces illustrations étonnantes que vous voyez. Dans le chapitre suivant, nous allons voir comment nous pouvons créer un tableau d'agents. Se déplacer aléatoirement à travers l'écran pour chacun des ligands. 6. de nombreux agents: Maintenant, créons notre gamme d'agents. Et avant de pouvoir faire tout cela, je veux ajouter le tableau de couleurs afin que nous puissions aussi randomiser la couleur. Ok, nous allons devoir changer ça en un tableau. Et puis ici, au lieu d'initialiser l'agent lui-même, nous allons initialiser le tableau et je vais juste faire un 100 pour l'instant. Et puis à l'intérieur d'une boucle for qui est inférieure à la longueur des agents. Nous allons initialiser nos agents à l'agent i. Donc, pour chaque événement va être ou pour chaque élément à l'intérieur du tableau va se produire. Et puis ici, je peux utiliser la boucle pour l'agent dans chaque agent. Donc une boucle foreach, parce qu'ils n'ont pas besoin d'utiliser l'index. Donc, je vais juste utiliser pour les agents, agents. Donc, cela garantit qu'il va regarder à travers tout ça plus. Oeil droit ou la position par ici. Et on n'a pas changé d'agent. Et maintenant chaque agent est initialisé cette largeur divisée par deux et la hauteur divisée par deux. Et ils ont tous le même mouvement parce que nous n'avons pas une vitesse aléatoire ou une taille aléatoire. Maintenant, si je fais ça, tu verras qu'ils sont tous au-dessus de l'autre. Donc, ils ont la même vitesse et la même taille. Donc, vous ne verrez aucun changement ici. Mais nous allons d'abord changer la taille. Je vais le randomiser de un à cinq. Maintenant, si je fais ça, tu verras que c'est bien mieux parce que maintenant les cinq dominent les mouvements. Les autres sont en dessous ou au-dessus, donc vous ne pouvez pas les voir. Vous êtes moins de vitesses randomisées. Donc, vous pouvez le voir parce que maintenant ils ont une vitesse variable. Et donc certains d'entre eux se déplacent plus vite. Et vous pouvez voir que peut-être l'un des plus petits se déplace plus vite. Et il était donc clair que c'est plus petit. Donc c'est comme si c'était de taille variable ou si c'était le même qui porte intérêt, mais ce n'est pas le cas, c'est des multiples. Maintenant, nous allons randomiser les couleurs afin que vous puissiez les voir les unes sur les autres sur la même ligne. Avant de commencer à randomiser l'acquisition d' axones, nous allons juste randomiser la position ou l'indice que nous obtenons de ce tableau. Donc j'appelle cette cause, je vais utiliser le tableau appelé. Et une fois que vous obtenez un index aléatoire, donc ce sera un hasard des couleurs qui sont allées si peu importe. Donc si jamais je fais de la publicité ici. Ça va être cohérent et il n'aura pas besoin de le changer dans les livres. Mais cela va se plaindre parce que ce n'est pas entier. Les indices ont à des entiers. Donc, je vais juste jeter ceci dans un entier. Et maintenant, si je lance ça, nous verrons qu'il y a plusieurs couleurs. Il y a donc en fait plusieurs agents les uns sur les autres. Donc maintenant, nous allons réellement randomiser la position x et y. Donc, je voulais être de n'importe quelle zone de 0 à la largeur, de 0 à la hauteur. Maintenant, cela devrait fonctionner sur la base de l'Illinois k_l et vous êtes gentil souche, cela va sembler différent. Alors modifions leur échelle de bruit. Si nous réduisons cela à dix, peut-être même réduire la taille un peu à trois. Encore une fois, pour atteindre la vitesse au lieu de, au lieu de un à négatif trois ou même plus lent. Donc je vais passer négatif 222 parce que je voulais bouger dans les deux directions et avec juste une direction pour les x et y et la vitesse est utilisée pour x et y. OK ? Et vous pouvez voir que c'est beaucoup plus agréable, mais ce n'est pas le cas. Les véhicules se déplacent vers le haut tandis que d'autres se déplacent vers le bas. De gauche à droite ou de droite à gauche, on peut augmenter le nombre d'agents en ce moment. De gauche à droite ou de droite à gauche, Alors faisons-le 1000. Et dans l'agence plus ont l'épisode plus agréable que j'aime en fait aller à très petite taille. Donc, le mien est généralement de cinq à un ou deux. Si vous avez des lignes très fines, dix, ça a l'air plus agréable. Et je vais même changer l'arrière-plan parce que le poids semble être un peu d'abord parfois. Et les couleurs. Donc avoir une couleur de carnet de croquis, il y a une petite page. Ça a l'air sympa. Et vous pouvez également ajouter d'autres couleurs. Peut-être que nous pouvons attendre un an et parce que nous avons choisi de choisir les indices des colliers cette longueur. Donc, quelle que soit la longueur que vous avez ici, ce qui signifie qu'il ne ruinera pas vos appelants sont portés à déclare éblouissement. Donc il y a rendre tout dynamique est beaucoup mieux, beaucoup plus agréable. Maintenant, le blanc ajoute une touche agréable au design. Donc je n'ai qu'à faire maintenant, c'est juste jouer avec nous, tuer. Une de mes échelles préférées n'est pas 1000, donc j'aime utiliser 3 mille parce que c'est beaucoup plus lisse et ensuite j'aime ajouter une rotation à cela. Alors peut-être laissez-moi obtenir 30, un Kindle encore plus haut à 50 et toujours belle apparence. Il lui donne en fait un travail de peinture très abstrait qui est encore plus de rotation que vous ajoutez lorsque la vague est très zoom, puis attendez, ici. C' est 3 mille rotations plus lisses ou plus grandes rotations plus lisses que vous allez avoir. Donc si je le fais, disons 200, vous allez voir qu'ils vont tous la même direction ou sur le côté scène de la vague. Mais ils tournent avec un angle très élevé. Et donc ils ont fait le meilleur travail. Nous pouvons également augmenter cela pour dire. Et parce que nous n'avions pas d'ISI et de graines aléatoires, ça va changer à chaque fois. Mais si vous voulez, vous pouvez le voir avant même la centralisation. Donc oui, c'est juste là. Et commencez toujours avec un 0, juste une année record, peu importe. Sommeil aléatoire à cause des couleurs. Parce que la seule randomisation que nous avons maintenant, c'est parce que, et vous verrez que nous aurons la même chose. Mais maintenant, je veux aussi vous montrer que si je renverse cela, d'autres vont regarder. Donc si j'ai mal appelé est plus petit, alors Mlle Frank. Donc disons un à deux mille ici. Et votre force à l'échelle de 300 nanométrique et va avoir plus de rotations et moins d'un mouvement lisse. Donc, même si vous regardez quelques sondes ici, il y a beaucoup de mouvement bruyant, sorte de similitude aléatoire qu'ils collent à leur position, ce qui est beaucoup plus agréable que ce n'est OK, descendre 2000 millions. Vous pouvez voir leur rotation. C' est en fait un de mes mots préférés ici. C' est beaucoup plus agréable que celui-ci parce qu'il vous donne aussi des variations dans les formes. Dans le prochain chapitre, nous allons parler un peu de la façon dont vous pouvez ajouter une troisième dimension à votre annonce. 7. Bruit tridimensionnelle: Ok, donc pour le bruit tridimensionnel, il suffit d'ajouter un argument de plus à la fonction bruit. Nous avons donc déjà x et y, et la troisième dimension va naturellement être facile. C' est juste à la dénomination conventionnelle pour les trois dimensions, qui est x, y et z. mais n'hésitez pas à l'appeler ce que vous pensez avoir plus de sens pour votre travail. Donc, je vais juste ajouter Z ici et puis je vais l'initialiser avec une valeur aléatoire. Et je vais le faire à partir de 2.4. Alors je finirai par ici. Et Santo ramners fonction et incrémenté ici. Maintenant incrémenté de 0,1. Et c'est à peu près tout pour la troisième dimension. C' est très simple. Et la raison pour laquelle je ne le divise pas par l'échelle de bruit parce que je veux qu'elle soit influencée ou que vous voulez que la rotation soit influencée par plus que x et y. parce que si je le divise par l'échelle Nuscale ne va pas faire autant de différence, mais je veux que z entraîne la rotation un peu plus. Et avant de lancer ça, je veux juste préfacer que la majorité du travail que je fais, ou en fait tout le travail que j'ai fait avant est juste bidimensionnel et sonore. Donc, je n'ai jamais vraiment travaillé avec du bruit tridimensionnel comme dans les œuvres d' art sorties que je partage parce que je suis toujours en train d'expérimenter avec ce qui semble bon. Cependant, je pense qu'il est très important de l'introduire ici. Bien que je n'ai pas d'exemples avec la troisième dimension. Je pense que ça fait partie intégrante de la compréhension de la fonction de bruit. D' accord ? Et je vais le diriger. Et puis nous commencerons à faire quelques ajustements pour voir quels changements. Maintenant, vous verrez que la rotation est très bruyante parce qu'elle tourne beaucoup plus qu'auparavant. Mais nous pouvons corriger cela en changeant la valeur aléatoire, la valeur aléatoire initiale pour z ici, ou nous pouvons réduire, ou nous pouvons réduire, qui est ce que j'ai trouvé le plus efficace est décrémenter le montant que nous incrémentons Z par. Donc si je fais 0.01, ça va me donner moins de rotation qu'avant. Donc, il est toujours très tourné, mais comme vous pouvez le voir, ce n'est pas la même rotation qu'avant. Donc, il se déplace un peu et puis sa rotation 360 degrés et se déplace à nouveau dans un mouvement très fluide. Donc, il est toujours vous donne un très beau résultat, mais il n'a pas l'air aussi agréable avec les couleurs. Et aussi il n'a pas l'air aussi agréable avec des couleurs opaques. Donc je vais d'abord changer ces 250 juste pour voir ce qui se passe. Et immédiatement c'est beaucoup mieux parce que vous commencez à voir le mouvement un peu mieux. Mais je n'aime toujours pas les résultats avec les couleurs. Donc, je vais créer un tableau Clara différent. Je vais juste faire comme ça. Maintenant, ça n'a pas l'air aussi agréable. Donc, je vais changer cela à 0.001, ceci pour réduire la quantité de rotation qui se produit. Donc c'est moins fréquent qu'avant. Et je peux voir que ça ressemble plus à des mouvements de cheveux ou à un mouvement de fumée. Et il semble beaucoup plus agréable même avec moins de capacité, il aura l'air plus agréable, mais vous devrez attendre un peu plus car il va devoir construire la couleur. C' est pourquoi je ne travaille pas nécessairement avec une troisième dimension, parce que j'aime beaucoup travailler avec les couleurs. Bien que cela semble très intéressant, il ne semble pas aussi intrigant qu'un voulait être grand parce que mon travail a tendance à être très coloré. Mais si vous êtes quelqu'un qui travaille avec beaucoup de noir et blanc, alors cela serait parfait même en noir et blanc, ou faire une couleur de tonalité parce qu'il vous donnera un design multidimensionnel. Et vous pouvez également jouer avec le bruit tuer ou réentendre. Alors faisons-le 3 mille. Vous aurez plus de cercles dans la conception. Et si je réduis cela à dix, on peut voir qu'il y a moins de rotation. Mais alors le z influençant LA rotation, donc il tourne toujours mais sur un chemin beaucoup plus lisse. Et il déforme également, forme ou déforme le flux réel de la bidimensionnelle de manière. Et parfois cela peut donner un très beau résultat. C' est une formule très simple. Et juste en changeant les belles fonctions d' une fonction de bruit bidimensionnelle à une fonction agréable en trois dimensions, vous pouvez obtenir avec une multitude de résultats différents. Vous devrez jouer avec elle, voir ce qui fonctionne le mieux pour vous. Jouez avec la coloration. Et nous allons également parler des techniques de clonage et de l'utilisation formes autres que les règnes pour créer votre design. Mais avant de pouvoir faire tout cela dans le chapitre suivant, je vais vous présenter comment rendre cette conception statique. 8. Bruit statique: Travailler avec un design statique est plus amusant pour moi que de travailler avec un design dynamique en mouvement. Principalement parce que j'aime voir les résultats dès que je lance le programme plutôt que d'attendre la fin de l'animation. Et rendre cette conception statique est très simple et les résultats sont complètement différents. Vous allez sur les mêmes chemins que l'animation traverse. Mais ça va avoir l'air plus vecteur. Et il semblera que vous utilisez courbes BCA dans Adobe Illustrator et que vous avez fait cette conception à la main. Et puis vous serez en mesure d'obtenir plus de variations car vous pouvez simplement exécuter le programme et enregistrer chaque page que vous obtenez. Ok, donc on va partir de là où on s'est arrêté avant, mais je vais enlever tout ce qu'on a fait pour le bruit tridimensionnel. Parce que encore une fois, je travaille habituellement avec un bruit bidimensionnel. Et puis je vais enlever ça aussi. Donc nous n'avons pas besoin qu'il soit transparent et alors nous n'avons pas laissé la taille aussi. Ok, donc pour nous de créer cette conception statique ou de créer des vecteurs sont des courbes occupées hors du mouvement. Nous allons utiliser la forme de début, une entrée, et utiliser le sommet actuel à l'intérieur de celle-ci. Et nous allons utiliser une boucle for ici, parce que maintenant nous ne bougeons pas seulement, nous devons penser au mouvement comme une boucle for. Donc, avant qu'il ne bouge parce qu'il était dans la fonction de dessin et la fonction de dessin est fondamentalement une boucle sauvage qui ne se termine jamais. Mais je veux avoir plus de contrôle sur mon design. Donc, je vais utiliser une boucle for avec une longueur fixe. Donc je vais créer de la longueur ici. Je vais en faire un entier. Et nous commencerons par dix. Alors je vais quitter la course. Et la même vitesse de coloration x et y sont les mêmes. Mais au lieu de dessiner un plan, je vais utiliser la forme de début. La forme peut dessiner en utilisant des sommets à l'intérieur. Et je vais utiliser la boucle for moins que les incréments de longueur. Maintenant, si je dessine le sommet ici et puis je vais ici pour afficher une mise à jour des agents, ce que j'essaie de faire ici, ça va être très cassé parce que je veux dessiner chaque sommet à la valeur moyenne d'ici. Donc, je vais juste le dessiner à l'intérieur de la fonction de mise à jour. Et puis je vais appeler la fonction de mise à jour à l'intérieur de ma boucle for. Donc fondamentalement à l'intérieur de ma boucle for, chaque fois que je reçois un nouvel angle et puis je change de position. Donc, c'était la même chose que nous avons fait ici quand j'ai appelé les méthodes de mise à jour. Parce qu'à l'intérieur de la fonction de dessin, nous mettions à jour. Donc, fondamentalement ce que nous appelons la fonction bruit encore et encore. Et puis nous appelons x et y, ou nous incrémentons x et y chaque fois par leurs valeurs sont par ces valeurs. Donc maintenant à la place, je vais mettre tout cela à l'intérieur de la boucle for parce que nous ne voulons plus dessiner la boucle ou la fonction de dessin qui boucle pour toujours. Et je vais juste utiliser le sommet incurvé est que je voulais courber les extrémités à nouveau pour le mettre à x, n, y.Et puis je vais appeler la fonction de mise à jour à l'intérieur de ma boucle for. Donc maintenant, nous avons recréé ce que nous faisions à l'intérieur de la fonction de la mâchoire. Mais à l'intérieur d'eux ont été contrôlés boucle. Et puis avant de l'exécuter, nous devons être sûrs que ce n'est pas en boucle parce que nous ne voulons pas que les boucles durent éternellement. Et puis je vais supprimer la fonction de mises à jour d'ici. Super. Maintenant, parce que nous avons fait la couleur du blanc juré pour cet environnement tridimensionnel, votre matériel remonte à mes couleurs. Ok, nous voyons déjà quelque chose, mais parce que notre longueur pour la boucle for est très petite et qu'il a commencé à y assister, nous voyons de très petites lignes. Donc, si j'augmente cela à, disons 30, maintenant nous commençons à voir le design beaucoup mieux. Aussi, je vais devoir enlever le film, donc je vais juste faire encore. Maintenant, on ne se remplit plus. Ça a l'air bien plus agréable. Nous pouvons aussi augmenter les vitesses parce que maintenant si j'augmente la vitesse, cela va seulement rendre ma longueur encore plus longue parce que certains, un sommet à l'autre, il y a une vitesse de tranches de pixels au lieu de seulement deux. Donc maintenant, si je fais ça, tu verras plus de mouvement fluide. Vous devez donc trouver un équilibre entre les vitesses et la longueur de chacun de ces chemins. Moins de vitesse va vous donner une longueur plus courte. Mais alors vous pouvez l'augmenter à partir d'ici et vous obtiendrez des résultats similaires. En outre, ce qui est agréable à propos des conceptions statiques, c'est que vous pouvez regarder les pads de votre fonction de bruit immédiatement. Donc, si vous voulez tester quelque chose, peut-être que vous voulez le rendre statique et ensuite vous commencez et vous voulez les visuels, le design en mouvement, alors vous pouvez MiniTest en utilisant ceci et ensuite aller de l'avant avec toutes les valeurs que vous de Newton re-scale en colère chaîne. Et si je fais le contraire comme nous l'avons fait avant, donc je vais faire un 100 ici et peut-être mille et plus ici, vous allez voir un design qui ressemble plus à des griffons ou les rayures qui données sur un morceau de papier en utilisant des couleurs. Si vous voulez augmenter le nombre d'agents, vous pouvez le faire ici aussi. Et ça vous donnera un design plus dense. Mais l'un de mes regards préférés sur cette conception est si nous revenons à 300, puis celui-ci, puis réduire le nombre d'agents remontent 2 mille, juste pour que vous puissiez le voir mieux. Et puis au lieu d'un accident vasculaire cérébral, nous le faisons remplir et nous ne faisons pas d'accident vasculaire cérébral ici. Et c'est là que les choses commencent à devenir très, très intéressantes pour moi. Maintenant, la longueur est très, très élevée, surtout pour les remplissages. Plus la longueur est élevée, plus le remplissage sera gros. Si vous avez déjà travaillé avec Adobe Illustrator et que vous avez travaillé avec l'outil Bessie ou l'outil Courbe de stylo dans n'importe quel autre programme également. Ça fonctionne de la même façon. Si vous avez des rotations très fortes dans vos courbes, alors vous aurez senti que scelle les espaces du premier au dernier point. Donc, si vous voulez réduire cela, vous pouvez jouer avec la longueur. Vous aurez donc moins de rotation pour chaque chapeaux ou chaque groupe de sommets connectés les uns aux autres. Mais alors vous allez devoir voir le même aspect sur le même design en utilisant ces courbes. Alors montons. 3030 peut produire des résultats beaucoup plus agréables. Maintenant, je peux aussi augmenter la vitesse. Je peux aussi augmenter le nombre d'agents. Maintenant, il ressemble plus à une illustration de plans, surtout si vous utilisez des couleurs qui imitent un peu plus les plans. Donc tous les verts. Et puis peut-être que nous pouvons réduire ça, même apprendre. Donc nous avons moins de rotation. Allons par ici et nous allons augmenter le beau celtique 3 000, donc nous avons moins de rotations aussi. Et puis je vais augmenter maintenant la rotation un peu, ou la force de leurs valeurs de bruit ou nous pouvons jouer avec elle. On peut descendre avec ses pieds. Vous pouvez également passer de un à deux. On n'a pas besoin de suivre un itinéraire, juste une direction. Il produira toujours de très beaux résultats. Tu peux aller jusqu'à 1000, et c'est littéralement ce que je fais à chaque fois. Je veux voir un design qui a l'air bien. J' ai essayé une valeur de buvard de bureau ensemble jusqu'à ce que quelque chose clique ou jusqu'à ce que quelque chose arrive. C' est pourquoi j'aime aussi travailler avec des graines de bruit, la graine aléatoire. Je pense que c'est l'une des raisons pour lesquelles nous n'avons pas d'équilibre différent. Oui. Maintenant, nous avons beaucoup de variations différentes. Nous pouvons également augmenter cela à un 100 indique là afin que vous puissiez les obtenir plus de conception de rotation, mais en utilisant ce style vectoriel. Et maintenant, vous obtiendrez ce design, qui semble également très, très intéressant. Je veux également présenter dans le chapitre suivant comment jouer avec les formes dans ce design direct pour trouver des conceptions de votre ellen basées sur les formes que vous utilisez pour suivre les chemins de la fonction de bruit. 9. Différents pinceaux: J' ai parlé de la création de formes personnalisées dans mon cours précédent. Revenons aux bases. Nous pouvons le faire ici pour peindre ces mouvements fluides avec des formes intéressantes. Ceci est très similaire à la création personnalisée de Photoshop ou de la création de pressions si vous l'avez déjà fait, chaque brosse peut donner une texture distincte produisant des résultats de variante au lieu de vous dessiner, mais l'ordinateur est, je vais créer une brosse avec vous et après je vais vous montrer certains de mes dessins avec d'autres brosses et vous marcher brièvement à travers les composants de brosses. Ok, à partir de l'endroit où nous nous sommes arrêtés dans le chapitre précédent ou dans la leçon précédente, nous n'aurons qu'à changer la forme au moment où nous dessinons en utilisant le sommet actuel. Parce que nous passons à notre conception dynamique en un design statique. Et nous allons continuer sur ce point. La seule différence est que nous allons créer une fonction de pinceau. Alors créons ça ici. Je vais appeler ça un pinceau. Et ce sera une méthode à l'intérieur de notre classe ou de notre classe d'agent. Et pour mon pinceau, je vais avoir besoin d'une exposition et de la position y et aussi d'un comptage. Le compte n'est pas nécessairement nécessaire ici, mais j'aime l'ajouter pour ajouter cet effet de hasard dans le pinceau. Commençons par un x et un y d'abord. Donc je vais faire la position flottante x, je vais juste l'appeler. Et l'autre va être appelé position. Pourquoi ? Parce qu'ils ne veulent pas me confondre avec les X et Y à l'intérieur de ma classe tous les ici. Alors j'ai juste changé ça. Et maintenant, ici, nous allons créer notre pinceau. Il a dit qu'on voulait créer un pinceau de cercles aléatoires. Donc, pour un pinceau de cercles aléatoires, nous allons avoir besoin de quelques cercles. Commençons donc par créer réellement le cercle, puis changerons cela en une approche plus dynamique. Donc, nous allons d'abord commencer par, disons sécher trois cercles. Et puis je vais mettre le premier à la position aléatoire de cinq à dix, puis une autre position aléatoire pour le Y de cinq à dix. Et puis je vais lui donner une taille aléatoire parce que cercle prend trois arguments par opposition à l'ellipse qui prend quatre. Parce que c'est un cercle, la largeur et la hauteur sont les mêmes. Donc, ce ne sera qu'un troisième argument au lieu d'un troisième, quatrième argument pour la largeur et la hauteur. Donc ici, je vais juste faire un ohm 5, ou de un à cinq. Donc je vais avoir une taille aléatoire de 1 à 5, ok, et je ferai la même chose pour tout ça. La raison pour laquelle j'ai dit de cinq à dix est parce que je veux contenir cette forme dans un carré parce qu'une brosse a généralement son propre récipient. Et pour ce faire, je vais devoir pousser une matrice et ensuite traduire toute cette boîte de formes. Donc, la brosse entière en utilisant la position x et la position y. Donc, je vais juste faire traduire et puis la position x et la position y. Et parce que je tous, je veux que la traduction arrive seulement pour chaque frais séparément, je vais devoir pousser une matrice pour chacun d'entre eux. Alors poussez la matrice et la matrice pop. Donc ça produit une nouvelle toile pour nous et ensuite ça traduira ça partout où je veux et à l'intérieur de celui-ci. Ou cette brosse entière va être trois cercles de positionnement aléatoire. Et ils vont commencer à partir de la position x et de la position y. Donc cinq à dix est en fait cinq pixels de la position x et dix pixels de la position x. Et la même chose vaut aussi pour y. D' accord ? Et maintenant, appelons le pinceau ici au lieu du sommet actuel. Et nous ferons x et y, comme nous l'avons fait avec le sommet actuel. Je vais augmenter un peu la taille ici parce que je ne pense pas que je vais le voir clairement. Et je vais réduire la durée à un seul parce que je veux arriver ici. Et puis je vais supprimer la forme de début et le commerce parce que nous ne dessinons plus avec des sommets. Et j'ai aussi enlevé le No Stroke et j'ai eu un coup de noir. Et puis ici, je veux utiliser, disons deux agents parce que je veux vraiment le voir clairement. D' accord ? Donc c'est sécher trois cercles l'un sur l'autre et celui-ci aussi. Je veux changer le hasard, donc je vais faire 15 à 20 ici, et ensuite 22, disons 30 ici. Parce que je veux changer, changer un peu sur l'axe des X pour qu'on puisse le voir. Donc, nous pouvons voir qu'il y a trois cercles. D' accord ? Voici donc trois cercles et c'est aussi trois cercles. Et au fur et à mesure que nous l' exécutons, nous obtiendrons des emplacements aléatoires pour l'axe des x et l'axe des y. Maintenant, au lieu de dessiner les trois cercles comme ça, je vais le changer en boucle pour. Donc, je vais faire pour entier i égal à 0 à normal for-loop et i est inférieur à, disons trois. Et nous allons l'incrémenter, et ensuite nous n'aurons qu'un cercle. Donc maintenant, nous avons réduit notre code de deux lignes à lignes inutiles parce que de cette façon j'ai obtenu les trois cercles et ils ont tous un emplacement aléatoire pour x et y. ok, et si nous exécutons ceci, maintenant, nous allons obtenir le même résultats par rapport à la précédente. La seule différence ici est qu'avant nous avions une plage différente pour aléatoire. Ici, nous avons la même gamme. Alors peut-être que vous pouvez rendre LA gamme un peu plus grande pour obtenir beaucoup plus de variation et le positionnement. Donc si je fais 15 à 20 pour l'axe x ici, ou 5-20 en fait. Donc, je ne fais qu'augmenter la portée et vous verrez que le positionnement a un peu plus de variation. Donc je vais juste le ramener à dix. Et voici où les comptes entrent en jeu ou un paramètre de comptage, parce que je veux que ce soit non seulement trois, je veux que ce soit une valeur aléatoire basée sur ce que je donne ici. Donc, je vais juste faire le nombre entier. Et je vais mettre cela comme la longueur du tableau. Et ici, je vais dire une valeur aléatoire de un à cinq. Donc je l'aurai soit. Un cercle, 23 à cinq, et je l'arrondisse. Donc, en fait, ce n'est pas jusqu'à cinq, c'est à quatre. Si vous voulez qu'il soit jusqu'à cinq, alors montez à six. Mais je vais rester avec cinq. Et puis vous devez le convertir en un entier. Parce que ici, nous avons un entier à l'intérieur de la boucle for parce que le comptage est toujours non décimal quand il s'agit de choses comme ça. Donc je peux dessiner un demi-cercle, par exemple, trois cercles sur la moitié, donc il doit être dedans. Et maintenant, si je le fais, je vais avoir 123 ou quatre cercles l'un sur l'autre. Donc si je viens ici et en fais 100, j'en aurai beaucoup plus. Et puis je peux augmenter la longueur à nouveau à, disons dix. Et nous pouvons enlever le coup afin que nous puissions mieux voir le design. Et je vais aussi augmenter la vitesse parce que je veux plus d'espace entre les cercles pour qu'il puisse avoir l'effet de ce pinceau. Donc, il a augmenté cela à 20 et augmenter la force de bruit à mille parce que je veux ce mouvement fluide et réduire cela à dix. Et puis je vais même en faire 1000 ou même 4 000. Maintenant, nous obtenons cette brosse de cercles aléatoires dans le design. Nous pouvons aussi réduire la taille en ce moment parce que je n'ai pas très grand d'avant. Donc, de un à cinq, je dirais que c'est vraiment bon. Aléatoire va juste copier et coller une façon différente de colorer cela, parce que je veux le voir un peu mieux parce que l'effet ne le fait pas toujours, ou les effets des autres pinceaux ne sont pas toujours beaux quand c'est de la même façon ou le colorier. Vous devez donc parfois simplement changer la façon dont vous coloriez vos dessins afin de voir les effets de ce que vous créez. Parfois, ce que vous créez semble vraiment cool si vous n'utilisez que deux couleurs. Mais ici, je vais appeler cette palette pour. Au lieu de le changer trois fois ici, je suis juste peut changer le nom du tableau. Donc ce que je fais ici est de cartographier le sinus de l'angle ici de un négatif à un à 0 à la longueur des points des palettes. Donc, je veux mapper les valeurs de l'angle sinusoïdal. Donc, quel que soit son résultat de la fonction d'angle sinusoïdal, je veux qu'il soit mappé à ces couleurs ou aux indices de ces couleurs. Et les indices vont de 0 à un de moins que la longueur des points de la palette. Donc je le contracte ici. Juste pour éviter toute valeur trompeuse sont des erreurs. Donc, je vais juste dire à nouveau, l'index va être égal, contraindre l'index de 0 à la longueur du point de la palette moins un. Donc, nous ne sortirons jamais tableau de l'exception liée. Et puis je vais utiliser ça pour les couleurs. Donc, au lieu de colorier ici en utilisant le hasard, que je vais en fait juste changer pour plus tard. Et oui, au lieu de le faire au hasard ici, je vais le faire à l'intérieur de la fonction de mise à jour. Et je vais appeler la palette avec l'index que nous venons de créer. Et en passant, tout le code pour les différents pinceaux et la technique de coloration seront liés dans la section ressources de ce cours. Alors, lançons ça et voyons ce qui se passe. Ok, je dois changer le remplissage d'ici à ici parce que c'est là qu'on change la couleur avant. On ne fait rien pour la couleur. Et maintenant, ça devrait fonctionner très bien. Donc maintenant vous pouvez le voir comme des couleurs pastel à l'huile si vous avez déjà travaillé avec ceux-ci, il a une texture très cireuse et cela me rappelle ça. Donc, vous pouvez augmenter les vitesses, disons 15. Et vous pouvez jouer avec. Vous pouvez voir la texture est plus granuleuse de cette façon parce que comme je l'ai dit précédemment, Plus vous avez de vitesse, plus l'espace entre chaque forme l'une l'autre. Et encore une fois, jouer avec le bruit du chou frisé et les forces du bruit peut produire beaucoup de résultats différents. Donc si je fais un 100 ici, vous allez voir un design très différent. Réduisons ça à six. Je vais enlever le blanc parce qu'ils n'aiment pas ça. Oui, c'est à peu près ce que vous devez savoir sur la création de pinceaux. Tout ce que vous devez faire est de créer votre pinceau ici, puis vous pouvez également le créer ici dans sa propre fonction. Son bien, cependant, vous devez l'appeler ici. Et si vous faites la coloration ici, alors n'oubliez pas de faire le remplissage ou le coup ici, mais ce n'est pas nécessaire. La seule chose nécessaire est trop sec à l'intérieur de la fonction de mise à jour après votre angle et x et y car alors vous allez appeler la fonction de mise à jour à l'intérieur de votre boucle for, l'intérieur de votre méthode de fonction d'affichage à l'intérieur de votre classe d'agent. Revenons maintenant aux autres formes. Maintenant que vous avez vu comment utiliser vos pinceaux personnalisés, voici quelques exemples d'autres souffle est un créé et les résultats que j'ai obtenu. Il est amusant de jouer avec les ombres parfois pour donner de la profondeur à votre travail. Dans ces exemples sont utilisés le pinceau fait d'une vue clients épais puis copié le même pinceau avec un certain décalage, créant un effet d'ombre. Vous avez seulement besoin de colorier la forme supérieure avec votre tableau de couleurs car votre dernière devrait avoir une teinte foncée pour créer cet effet d'ombre. Très simple mais très intéressant. L' astuce avec celui-ci, cependant, est d'augmenter la taille de l'étape et de diminuer le nombre d'agents afin qu'il ne soit pas trop encombré. Voici à quoi ressemble la fonction. Je voulais aussi créer un pinceau à traits fins pour imiter ces pinceaux carrés effilochés. Ils m'ennuient un travail analogique. Mais pour les images générées par ordinateur, ils étaient assez gentils. Ils sont les mêmes que le pinceau des cercles aléatoires, mais avec des lignes à la place, jetez un oeil à la fonction et essayez de la recréer. Ce ne sont là que quelques-unes que j'ai inventées pendant que je planifiais ce cours. Il est temps de créer le vôtre et de trouver quelque chose d'unique pour vous. 10. Techniques de coloration: Un algorithme peut produire autant de résultats uniques en changeant vos techniques de coloration autres que la sélection aléatoire des couleurs d' un tableau ou la mise en correspondance des couleurs à la position et à la rotation, vous pouvez saisir les couleurs d'une image intéressante en obtenant les couleurs de chaque pixel à la même position que vos formes, vous suffit d'importer l'image, de la redimensionner pour s'adapter à votre canevas de préférence dans le même rapport que votre canevas. N' hésitez pas à être non conventionnel et à l'étirer. Ensuite, utilisez la méthode GetMethod dans la classe PMF pour saisir votre couleur du pixel sous-jacent. Ces exemples montrent certains de mes autres arts génératifs comme intrants. L' un génère des couleurs lors de l'initialisation des agents et l' autre saisit les couleurs au fur et à mesure qu'elles se déplacent, produisant des résultats variables. Une autre technique que j'ai ramassé de Taylor Hobbes messages sur son site est la coloration basée sur quelques couleurs dispersées sur l'écran. C' est un processus long, mais l'essentiel est dispersé et affiché des objets avec des couleurs stockées aléatoirement. Ensuite, en vérifiant la distance entre vos agents mobiles et ces objets, la distance la plus courte détermine la couleur de votre agent mobile. Maintenant, vous pouvez lire plus dans Tyler Hubs site que sa technique a un peu plus d'étapes à elle. Voici un exemple où j'ai suivi constamment la distance au fur et à mesure que les agents se déplacent, produisant une texture Voronoi. Vous pouvez également saisir les couleurs des lignes de couleurs à l' écran horizontalement ou verticalement à l'aide de la propriété x ou y. C' est similaire à la cartographie de la position, mais cette approche gardera les couleurs relativement inégalées, créant ainsi un aspect dégradé. Cependant, plus ce programme est long, plus les couleurs seront fusionnées et l'effet de dégradé se dissipe. Vous pouvez y parvenir en utilisant cette équation, par exemple, pour vos indices de palettes, car cela donne le reste de la longueur de palettes divisant x par r compte de 0 à un de moins que la longueur de votre tableau de palettes lorsqu'elle est arrondie. Puisque x se déplace avec de très petits incréments, cela vous donnera des colonnes très minces. Pour récupérer que vous pouvez diviser x par r colonne largeur désirée. J' ai choisi de donner chaque colonne de couleur en divisant x par la largeur de la toile divisée par la longueur de mes palettes. Cela peut produire des valeurs recherchées par quelqu'un. Donc, une méthode de contrainte est un conseil pour garder votre contrainte de valeurs d'index entre 0 et le dernier index de votre tableau de couleurs. Ce sont quelques-unes des œuvres d'art résultant de cette technique de coloration. La méthode de coloration suivante est assez intéressante car elle donne des textures comme un nuage, donnant plus de profondeur à votre art. Vous pouvez obtenir la pente en utilisant cette formule, qui est très similaire à l'année précédente. Ici, nous utilisons l'angle du mouvement au lieu de la position x et y. Voici les résultats. Last but not least, pour jouer avec la couleur utilise l'interpolation des couleurs. J' ai parlé de cela un peu plus en détail dans mon dos au cours de base dans la section couleur, n'hésitez pas à vérifier cela pour obtenir plus d'informations. La fonction de couleur de justice qui blurb crée un tableau de couleurs utilisant seulement deux couleurs. Pour ma conception, j'ai créé cette fonction de gradient pour créer une nouvelle palette en interpolant entre chaque couleur suivante dans mon tableau d'origine. Cela permet une transition de couleur plus fluide au fur et à mesure que les agents se déplacent, vous pouvez utiliser l'une des techniques précédentes pour utiliser cette nouvelle palette. J' utilise cette formule pour mon index pour créer une transition de couleur oscillante en mettant à jour mon angle de fonction sinusoïdale par un dans la méthode de mise à jour et en le divisant par un 100 pour la mettre à l'échelle afin qu'il y ait plus de temps pour chaque couleur à apparaître. Ce n'est pas ma technique préférée avec ce programme, mais jouez avec. Vous trouverez peut-être cela une valeur pour vous. Il y a certainement beaucoup plus que vous pouvez faire en termes de coloration de vos dessins. Mais j'espère que ces techniques sont suffisantes pour élargir vos horizons et faire couler vos jus créatifs. Je suis excité de voir ce que vous venez avec. 11. Enregistrer des images: Maintenant, nous avons créé, Oliver conçoit, statique et dynamique. Et il est temps de sauver. J' ai parlé de sauvegarder vos designs ou de certains moyens qu'il peut enregistrer vos designs dans mes autres cours. Mais je vais le répéter ici. Parce qu'il veut également mentionner quand enregistrer une animation, quand enregistrer une seule image fixe ou est allé enregistrer une image vectorielle de haute qualité. La première chose que je fais habituellement est d'enregistrer des images fixes, et je le fais parfois dans ma taille de test. Donc comme 500 par 500, comme celui-ci en ce moment. Juste pour voir à quoi ressemblent les choses. Principalement parce qu'en ce moment nous pouvons voir que les couleurs sont vraiment brillantes, même si les couleurs que j'ai choisies sont un peu muettes que celles-ci. Mais pour une raison quelconque, la vue ici vous montre des couleurs très, très vives. Mais une fois que vous l'aurez sauvegardé, les couleurs vont être un peu muettes. Peut-être que tu veux les changer. Tu aimes vraiment ces couleurs vives, donc tu devras les égayer et le refaire. Donc, tester en utilisant une taille qui est petite, comme celle-ci est une bonne façon de procéder. Donc, si vous voulez enregistrer juste un PNG, vous pouvez le faire de cette façon. Alors ouvrons un nouvel onglet. Je vais l'appeler sauver. Et maintenant à l'intérieur, je veux l'enregistrer quand les touches pressées, surtout avec ce travail parce que je dois attendre qu'il fonctionne et voir les résultats que j'aime. Et puis je veux le sauver. Je vais devoir attendre un certain point et cliquer sur un bouton. Ainsi, vous pouvez soit cliquer sur la souris si vous le souhaitez. Vous pouvez choisir MousePressé ou MouseClicked comme fonction que vous souhaitez rechercher en entrée. Mais ce que j'aime ou ce que je préfère est d'utiliser la touche pressée. La raison en est que si je veux enregistrer la même image comme une image vectorielle, et que c'est toujours une image raster, alors il est beaucoup plus facile pour moi d'utiliser KeyPressed car alors je vais chercher la lettre s Si je veux l'enregistrer en PNG, mais je vais demander à la lettre P pour l'enregistrer en PDF, qui est le format vectoriel. Ici, nous allons seulement l'enregistrer en tant qu'image raster, en tant que PNG. Donc, nous n'avons pas à y penser beaucoup, mais j'aime toujours garder l'habitude de simplement le mettre à l'intérieur d'une fonction de touche. Donc je vais juste faire la touche pressée et pressée est en fait capital, ok ? Et ils vont juste utiliser if et puis la clé de mot clé. Donc, la touche recherche n'importe quelle lettre ou tout caractère que vous appuyez sur le clavier. Et pour les personnages, vous devez faire une seule citation. Et je dis, OK, si la touche est la touche qui est pressée, alors faites-le. Donc, je vais enregistrer mon PNG, mais je veux l'enregistrer d'abord à l'intérieur d'un fichier de sortie. J' aime garder mon travail organisé. Et puis plus fois TAM et plus point PNG. La raison pour laquelle j'utilise l'horodatage ici parce que c'est ce que j'ai appris de la conception générative, le livre. Et je le fais depuis parce que cela le plus de sens dans l'enregistrement de vos fichiers et cela garantit que vous n'écrasez pas vos anciens fichiers car il n'y a pas de date et d'heure comme les autres. Vous pouvez donc simplement enregistrer vos fichiers sans vous soucier de les nommer. Et vous savez aussi quand vous les avez créés. Donc c'est aussi un plus. Maintenant, afin de créer la fonction timestamp, j'écris juste une chaîne parce que je retourne une chaîne parce que c'est ce que j'ajoute ici, concaténant avec les deux autres chaînes. Et avant qu'on commence à faire ça, je veux vous montrer que je n'ai toujours aucun fichier enregistré. Donc c'est mon dossier. J' ai mon fichier agent, qui est mon robinet par ici. De nombreux agents, qui est les minifourgonnettes tapent ici, qui est le nom du fichier principal. Et puis mon point p sauvegardé, qui est mon robinet sûr ici. Ok, maintenant nous pouvons continuer à créer les fonctions d'horodatage. Donc, je vais juste faire l'horodatage. Et à l'intérieur, je vais obtenir une instance du calendrier, qui est une classe de la classe utilitaire Java. Donc, importons-le d'abord. Donc il ne se plaint pas. Donc, je vais juste importer quelque chose appelé java.util pour vous dans Lee, puis le calendrier. Maintenant, nous avons la classe de calendrier. Et je peux dire à partir de la classe de calendrier, donnez-moi une instance appelée maintenant, et vous ne la créez pas en disant nouveau calendrier. Tu dis le calendrier. Donc, vous devez appeler à nouveau la classe, puis point get instance. Et maintenant, nous pouvons le formater. Donc, je vais juste retourner le format de point de chaîne afin que vous puissiez formater la chaîne que nous obtenons d'ici. Dans un format. Vous formater, ou vous écrivez votre format ici à l'aide d'une chaîne. Et puis ici, vous écrivez votre variable ici. Donc, ici, nous allons écrire la chaîne de format. Et la chaîne de format va être le signe de pourcentage et un, puis des signes de dollar. Donc, c'est diriger vers cela fondamentalement. Donc, nous disons de prendre la valeur ici et de me donner l'année. Donc l'année est T y et ça va me donner une urine à deux chiffres. Et puis je ferai la même chose. Donc, je vais copier cette partie parce qu'elle cible cet argument ici, qui est le premier argument à l'intérieur du format, car il peut ajouter encore plus d'arguments ici. Ce sera donc le premier argument. C' est le deuxième argument pour que cela le formate, mais nous n'en avons qu'un. Alors je vais recommencer. Et cette fois, je veux le mois, et puis je recommencerai et cette fois j'ai gagné la journée et je ferai un trait de soulignement. Donc je reçois l'année, deux chiffres de l'année, deux chiffres du mois, puis deux chiffres du jour. Et puis je veux un trait de soulignement, puis l'heure. Donc, si vous enregistrez plusieurs images dans la même journée, il aura des temps différents en utilisant les secondes aussi. Donc s'il économise même dans la même minute, ça va toujours être différent et n'écrasera pas votre ancien. Donc, nous devons à nouveau inclure ceci et puis l'heure. Et cela me donnera les deux chiffres de l'heure et dix minutes, puis secondes. Donc maintenant, quand nous disons que nous allons voir deux chiffres de chaque année, mois et jour, et ensuite nos minutes et nos secondes, et nos minutes et secondes ne seront pas capitales. Vous pouvez trouver ceci ou d'autres formats dans la documentation Java. Donc, si vous dites des formats de chaîne, il, vous obtiendrez tout cela et comment vous pouvez formater votre Spanx, et c'est à peu près tout. Donc maintenant, si je lance cela à nouveau, donc je dois le sauvegarder et l'exécuter. Maintenant, je vais le laisser fonctionner un peu et ensuite je vais appuyer sur la touche S pendant que cela est activé. Donc, si jamais je retourne ici et que je veux le sauver, ça ne sauvera pas, il écrira S ici. Nous devons donc nous assurer que cela est activé. Une fois que vous l'exécutez réellement, il est juste automatiquement activé de sorte que vous pouvez simplement appuyer sur l'ascii. Donc je vais appuyer sur l'ascii et maintenant on va retourner à notre dossier. Et nous pouvons voir le dossier de sortie en ce moment, si les dossiers de sortie ont déjà été créés, qu'il va juste l'enregistrer à l'intérieur de celui-ci. Nous pouvons voir l'image ici, et l'image a le nom que nous avons formaté. Donc il en a 20. Donc 20-20 que le 18 octobre et souligner 1705 heures en 26 minutes puis 24 secondes. Donc maintenant, même si je retourne en arrière et que je sauve une autre version de ceci, j'aurai l'autre. La seule différence entre ces deux-là, c'est que cela a été créé à 5 heures et 26 minutes. Et cela a été créé à cinq heures et 27 minutes et neuf secondes de votre comptabilité. C' est la façon la plus simple de voir une image uniforme. Mais que se passe-t-il si vous voulez une image de haute qualité que vous voulez partager ? Donc, cela je ne crée que Whenever je teste mes fichiers ou teste mes images. Parfois, je teste même avec la résolution dont j'ai besoin parce que peut-être plus tard vraiment aimé les résultats que j'ai obtenus de ces tests que je veux utiliser. Donc, j'aime changer ou j'aime coder et 500 par 500. Et une fois que j'ai établi le design que j'aime, je le prends jusqu'en 1920, en 1920. Et elle sera coupée de l'écran. Mais vous pouvez voir le design clairement. Les lignes sont un peu SAN ou je n'ai pas autant d'agences que je veux. Donc je peux revenir en arrière et l'améliorer. Et même juste voir une partie de l'écran ne va pas gâcher le design pour vous parce que c'est toujours très aléatoire. Même la fonction bruit produit des valeurs aléatoires. Donc ça ne sera pas le même à chaque fois. Si vous voulez que ce soit le même, vous pouvez certainement utiliser la graine bruyante et aléatoire. Ce que vous faites est de faire des graines flottantes, puis de longues graines aléatoires. Des noms que vous voulez les appeler. Et là, je vais dire, en fait, je vais juste le faire ici. Et je vais en faire un entier à la place. Tu n'as pas besoin d'un flotteur. Et là, je vais faire des graines aléatoires. Et ça va égaler la valeur aléatoire des graines que nous obtenons. C' est donc la valeur maximale que nous allions utiliser. Et puis cela va se plaindre parce qu'il dit incompatibilité de type parce que aléatoire va produire une valeur flottante quand il doit être long parce que siège aléatoire aussi long. Donc je vais juste le jeter dans un long. Et la raison pour laquelle j'utilise le type de données long est que le bruyant n'accepte pas un flotteur sauf si longtemps. Donc je vais juste les utiliser ici. Graine aléatoire et je vais utiliser la même chose. Vous pouvez en créer un autre pour un siège aléatoire, mais je veux l'utiliser ici et ensuite je vais imprimer la graine aléatoire. Donc, chaque fois que vous trouvez un design que vous aimez et que vous voulez y retourner. Vous pouvez garder ce siège ici. Donc maintenant j'ai imprimé la graine semée à l'intérieur de la graine de bruit est en fait 974, et à l'intérieur de la graine aléatoire il est 974 aussi. Donc, si vous voulez répéter ce dessin, peut-être que vous voulez l'enregistrer à une plus grande échelle pour quelqu'un qui l'a demandé, vous pouvez revenir aux graines et vous pouvez enregistrer les graines dans votre nom de fichier. Ok, je voulais juste l'inclure dans la sauvegarde du fichier parce que ça fait partie de la façon dont j'ai enregistré mon fichier parfois. Maintenant, sauvegardons une animation à la place. Disons que je veux avoir cette animation qui se passe. Donc je vais retourner à 500 par 500 et le montrer pour que vous puissiez mieux voir les dessins. Disons que je veux enregistrer l'animation. Maintenant, si je veux enregistrer une image, je peux juste frapper S à tout moment et ça va l'enregistrer. Mais si je veux sauver l'animation, je vais le faire ici. Donc, après la fonction de dessin, et bien sûr, la fonction de dessin doit boucler parce que je veux dire que c'est une animation. Et puis je vais dire cadre. Donc c'est la même chose que sûr. Mais ici, cadre sûr enregistre fondamentalement chaque cadre qui s'est passé dans votre conception. Et ça va ajouter des nombres d'un à n'importe quelle image à laquelle vous vous arrêtez. Donc, disons que je veux payer chiffres, nom de fichier parce que généralement je vais aller jusqu'aux milliers de cadres. Donc, jusqu'à 2 mille, parfois encore plus juste pour obtenir le temps que je veux. Et puis j'ai eu PNG. C' est donc tout ce que vous devez faire pour enregistrer l'animation. J' aime aussi lui donner une sortie différente, surtout si j'ai une sortie originale ou un dossier, un dossier de sortie, je veux dire, donc sortie deux, je vais l'appeler parce que j'ai déjà une sortie et alors cela dira ventilation. Et maintenant, si je lance ceci et aller à mes sorties. Deux, je verrai les cadres sauver. Donc on est à 100. Et vous pouvez voir que l'animation est beaucoup plus lent hériter parce qu'il sauve chaque image, donc il prend son temps tout en l'économisant. Et maintenant, disons que je veux arrêter ici et propriétaire pour faire ces et l'animation, je vais devoir aller au menu du traitement. Il n'est pas capturé dans l'écran, mais je vais vous montrer exactement où vous pouvez les trouver. Il se trouve dans le menu Outils comme Movie Maker. Donc, si vous cliquez sur Movie maker, est devenu juste glisser un dossier avec des fichiers d'image dans le champ ci-dessous. Donc je vais juste faire glisser le dossier au lieu de naviguer. Et maintenant il a le chemin. Et c'est par défaut 60 images par seconde car cela fonctionne sur 60 images par seconde, mais cela peut changer cela. Donc, si je voulais être un peu agité, peut faire 12e taux d'images. J' ai fait des animations avec une fréquence d'image d'une par seconde pour le rendre un peu comme une horloge en mouvement. Et puis je veux que la compression soit une animation. Vous pouvez en faire une séquence jpeg ou une séquence PNG, mais je vais juste faire une animation et la même taille que l'original. Donc, il ne va pas regarder la largeur et la hauteur. Ne vous inquiétez pas pour ça. Si vous supprimez ceci, il va vous demander de changer. Mais si on dit la même taille que l'original, ça va nous donner 500 par 500 et pour celui-ci. Et puis si vous voulez faire glisser un fichier audio dans le film que vous créez ou dans l'animation. Et tu peux juste le faire glisser jusqu'ici. Et maintenant, je peux juste dire créer le film et il me demandera où le sauvegarder. Donc, je vais juste l'enregistrer dans le même dossier. Je vais juste le garder ici. Donc maintenant, c'est fini de créer le film ici. Le seul problème que j'ai trouvé dernièrement avec celui-ci, avec les nouvelles versions de Mac est qu'il ne va pas jouer en temps rapide. Donc, ce que je fais est juste d'aller à n'importe quel logiciel qui change n'importe quel fichier vidéo en un mp4 et les intérêts convertissent cela. Donc oui, c'est à peu près comme ça que vous créez une animation. Et maintenant, parlons de l'enregistrement d'un PDF ou d'un format vectoriel. Enregistrer un PDF pour enregistrer un format vectoriel produit images de très haute qualité car il peut alors convertir vos fichiers PDF en images PNG. Et ce sera une qualité beaucoup plus élevée que de simplement le sauver tout de suite. Et sans faire toutes les modifications lorsque vous modifiez la taille de votre Canvas. Donc, fondamentalement, si je veux enregistrer cela comme 500 par 500 ne va pas l'enregistrer comme 500 par 500 parce que ce sera une image de très haute qualité parce qu'elle l'a enregistrée comme un format vectoriel au lieu d'une image raster. Donc, si je veux le sauvegarder, je vais juste copier et coller tout ce que nous avons créé ici. Donc, je n'ai pas besoin de créer l'horodatage à nouveau. Et je vais créer un nouvel onglet et il suffit de l'appeler enregistrer. Et puis je ferai la même chose ici. Je dois aussi. Le calendrier. Ok, donc maintenant tout est pareil. Et si je lance cela à nouveau, je peux facilement enregistrer ceci et ça va sauver. Donc maintenant ma sortie ici et vous pouvez voir ce que l'image est très petite. Mais puisque c'est une image statique, je peux facilement faire un PDF. Donc, pour faire un PDF, ou j'enregistrer un fichier PDF, je vais juste faire la même chose que j'ai fait ici. Mais cette fois, je vais faire si la clé est P. Donc si c'est Pete et je veux l'enregistrer en PDF et ce ne sera pas ce sera un enregistrement de début. Et enregistrer. Je vais commencer l'enregistrement ici. Et puis quand j'ai appuyé sur cette clé, je veux qu'elle se termine requise. Et puis commencez d'accord. Il nécessite plus d'arguments et l'enregistrement ne nécessite aucun argument, donc je devrai juste faire PDF comme formats et ensuite je ferai ce que j'ai fait ici. Donc, je vais juste copier et coller cette partie. Et puis je vais faire PDF à la place ici au lieu de PNG. Donc c'est fondamentalement la même chose. Je voulais être à l'intérieur de mon dossier de sortie. Et la fonction d'horodatage est ici aussi. Mais maintenant, si je veux sauver ça, ça ne va pas sauver mon image. Donc, disons p et puis j'écris E. Tout d'abord, il ne va pas enregistrer parce que nous avons oublié d'importer la bibliothèque PDF a montré une bibliothèque PDF est fondamentalement une importation de bibliothèques de traitement à partir de PDF point de traitement. Et puis je veux tout. Et puis si je lance cela à nouveau, donc je fais juste p et puis je vais faire e. Et maintenant c'est mon PDF. Donc mon PDF est une toile vide. Il n'a pas vraiment fait quoi que ce soit parce qu'il a commencé à enregistrer. Mais il n'y a rien ici pour l'enregistrer parce qu'il ne cherche pas ça ici. Il doit savoir ce qui est enregistré et cela doit être compris entre l'enregistrement de début et l'enregistrement. Mais il n'y a rien de vraiment pris en sandwich entre eux. Donc, je vais juste appeler la fonction de configuration parce que j'ai besoin de tout ici, parce que j'ai besoin de la couleur de fond. J' ai besoin du nombre d'agents ou de l'initialisation des agents, puis j'ai besoin du mouvement ici. Donc, je vais juste faire l'installation et puis dessiner. Et maintenant, si je lance cela à nouveau et puis je clique sur la lettre PI, et vous verrez que le pdf est créé, mais ce n'est pas fini parce que nous n'avons pas vraiment terminé l'enregistrement. Donc, si je vais à nouveau, activer ceci et puis appuyer sur le E, vous verrez cela changer dans le design. Et puis vous pouvez voir que c'est une image de très haute qualité. Vous pouvez donc le convertir en PNG. Il y a beaucoup de plateformes où vous pouvez le faire. Je le fais généralement à l'intérieur de mon Mac parce que je crédite une action où je peux convertir cela en PNG directement ici. Et puis il l'enregistre à l'intérieur d'un dossier que je lui ai demandé de sauvegarder à l'intérieur de mes actions. Et ça l'enregistre en PNG. C' est une toute autre histoire, mais la changer ou la convertir en P&G n'est pas vraiment une tâche difficile. Et vous pouvez trouver beaucoup de plateformes qui font. Donc, oui, c'est à peu près comme ça que vous enregistrez un format vectoriel. Et si vous voulez l'ouvrir en tant que vecteur, vous pouvez simplement cliquer ou cliquer avec le bouton droit de la souris, puis ouvrir avec Adobe Illustrator. Et ça va l'ouvrir pour vous et vous montrer comment ouvrir et manipuler le travail dans mon autre cours. Donc, vous pouvez aller et suivre cela dans mon Intro to Janvier de l'art, où vous pouvez créer une grille et là vous pouvez apprendre comment ouvrir cela dans Illustrator et le modifier. Là. 12. Inspiration et d'autres informations: Peu importe combien d'exemples et vous donner, je ne suis qu'une personne avec un seul cerveau. Donc, pour l'inspiration sur ce que vous pouvez faire avec les informations de ce cours, visitez ou provoquer Ouvrir la page de traitement. Il a une tonne de travail incroyable avec du bruit. L' un de mes favoris absolus est cette horloge. Il utilise la fonction bruit pour détruire son image. Cela semble très compliqué, mais le code est assez clair et direct. Cet artiste utilise p5 js, ce qui équivaut à un traitement sous forme JavaScript. Il est très facile de déchiffrer car ils utilisent tous les deux les mêmes méthodes. Mais si vous êtes coincé à n'importe quel moment, hésitez pas à me le demander dans la section de discussion ou à vérifier la documentation des deux langues pour obtenir des réponses. Maintenant je retourne au travail de Tyler Hobbes car il ne cesse de m'étonner. Il a un article et de travailler avec des champs de bruit et de flux qui a quelques informations précieuses et des techniques intéressantes de déchets et de déformer les mouvements des agents. La façon dont il est, c'est que le champ de flux est différent de la façon dont je l'utilise. Si vous visitez la nature du site Web de code par Daniel expédition, qui est une autre grande référence pour travailler avec des champs de flux. Vous pouvez mieux comprendre comment Tyler Hobbes utilise les champs de flux. Le concept ici dans ce cours, là, et les références est similaire, mais le processus est différent. Si vous trouvez d'autres références, veuillez les partager avec vos cours. Dans les notes de cette vidéo ou dans la section discussion, je suis toujours à la recherche de nouvelles inspirations et de nouveaux défis. Aussi, n'hésitez pas à partager votre processus avec tout le monde dans la section discussion ou dans vos notes de projets. C' est agréable d'obtenir et de donner des commentaires constructifs. Nous nous entraidons à progresser.