S'amuser avec l'art génératif : couleur et texture | Hadeel Alharthi | Skillshare
Menu
Recherche

Vitesse de lecture


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

S'amuser avec l'art génératif : couleur et texture

teacher avatar Hadeel Alharthi, Creative Coder and Artist

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.

      Vidéo d'introduction en couleur et texture

      1:10

    • 2.

      Texture 01 : Recreating cercles

      23:21

    • 3.

      Texture 01 : Recreating carrés

      35:16

    • 4.

      Couleur 01 : Interpolations aléatoires en couleur

      24:23

    • 5.

      Texture 02 : Images de fond

      37:15

    • 6.

      Couleur 02 : Couleur à partir d'images

      25:27

    • 7.

      Texture 03 : Éléments arrière-plan

      3:10

    • 8.

      Couleur 03 : Couleur par distance

      24:09

    • 9.

      Texture 04 : ombres de descente

      18:43

    • 10.

      Couleur 04 : Couleur avec des masques

      16:09

    • 11.

      Projet final

      25:04

  • --
  • 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.

225

apprenants

2

projets

À propos de ce cours

Bienvenue dans un nouveau cours d'art génératif. Ce cours vous apprendrez à améliorer votre conception générative au niveau supérieur. Nous passerons à travers huit méthodes, dont quatre ont besoin d'ajouter de la texture à votre travail, tandis que les quatre autres sont en matière de couleur.

Enfin, nous passerons en revue un projet final demonstrating comment combiner certaines des techniques de les leçons en une partie, vous montrerons que vous pouvez appliquer ce que vous apprenez dans ce cours.

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: Advanced

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. Vidéo d'introduction en couleur et texture: Bonjour à tous, Mon nom vous frappe et c'est une couleur et une texture génitives. Lorsque j'ai appris l'art génératif pour la première fois, j'étais au-dessus de la lune par les possibilités des créations procédurales. Mais ce n'est que lorsque j'ai commencé à chercher des idées prêtes à l'emploi que j'ai commencé à développer un style. Chaque fois que j'ai appris une nouvelle technique, je reviens à de vieilles esquisses et je les implémente pour trouver comment fusionner les deux projets. Dans ce cours, nous allons discuter de la manière dont vous pouvez apporter profondeur et du semi-réalisme dans votre travail grâce à des méthodes de texturation et de coloration faciles à mettre en œuvre. J'ai pu huit leçons différentes sur la façon dont vous pouvez essayer des textes et colorer votre design génératif. Et un dernier projet mettant en la combinaison de plusieurs procédures dans une œuvre d'art finale. Dans quatre des leçons, nous examinerons quatre façons d'ajouter de la texture à votre travail, de la ressemblance à des formes dessinées à la main à l'ajout de simples ombres déroulantes graphiques. Et enfin, pas une palette de couleurs à prix réduit et parfaitement randomisée. Mais dans ce cours, je vais vous montrer des techniques de coloriage qui élèveront votre travail au niveau supérieur, nous créerons une œuvre d'art complète à partir de zéro pour chaque méthode, montrant comment j'avais pensé à les utiliser et à vous donner idées d'application. Je pense que c'est suffisant pour une introduction. Commençons donc. 2. Texture 01 : Recreating cercles: Dans les deux premières leçons de la texture numéro un, j'ai voulu parler de recréer les formes primitives qui sont les formes natives en cours de traitement, comme les cercles et les rectangles, particulier les cercles et les rectangles. Dans cette première leçon, nous parlerons de cercles, puis dans la leçon suivante, nous parlerons de recréer des rectangles. Donc, pour celle-ci, nous allons créer une nouvelle classe, et cette classe sera le cercle. Donc, pour commencer, nous allons le faire, nous allons le nommer blob. Dans cette classe, nous allons maintenant définir toutes les propriétés dont nous allons avoir besoin pour créer un cercle à l'aide de points. Si vous y réfléchissez, un cercle a un point central, puis il a un rayon. Et plus tard, les points qui vont créer le périmètre du cercle. Donc, pour les points qui créent le périmètre, il s'agira d'un tableau de flotteurs qui seront des positions de x et de y. Ensuite, nous avons également besoin de la résolution pour connaître le nombre de points dont nous avons besoin pour créer ce cercle. Pour cela, je vais simplement créer un entier et je vais juste l'appeler Raz pour une résolution. Et nous allons également avoir besoin du centre x et du centre y pour le centre du cercle. Ensuite, nous avons également dit que nous allons avoir besoin d'un rayon. N'oublions donc pas cela. Bon, et pour commencer, nous allons créer un réservoir ici. Et je vais initialiser ces variables sont ces propriétés dans le constructeur. Je vais le faire et les rouges. Ensuite, je veux également définir l'axe central et le pourquoi central plus tard. Je ne vais donc pas les trouver ici. Le centre x sera égal à ce centre x, puis centraliser le même. Et maintenant, nous allons initialiser x et y. Ceux-ci seront de longueur rouge. Parce que x et y, je vais juste être les positions et leur quantité sera la résolution de ce cercle. Et pour le rayon, je vais commencer par des valeurs aléatoires. Je vais m'en tenir aux valeurs aléatoires. Montrez pour moi qu'il y aura de 10 à 50 flotteurs avant de commencer à créer ou à afficher le cercle en utilisant les points x et y, je dois initialiser les valeurs pour x et y. Je vais donc créer une fonction d'initialisation. Et dans cette fonction vont avoir une boucle. Et bien sûr, cela va être inférieur à la résolution. Et ensuite, nous allons augmenter d'un seul, normalement. Maintenant, ici, nous allons créer les points. Si vous avez visité mon Instagram ou YouTube, vous auriez vu comment créer des points autour du cercle. Ou si vous avez suivi mon cours Polar Grid. Mais généralement, nous allons créer ces points autour du cercle en tournant à l'aide de cosinus et de sinus. Nous allons donc utiliser ces fonctions pour dessiner les points autour du cercle en utilisant les angles des points à l'intérieur de ce cercle. Au fur et à mesure que nous traversons cela, vous serez en mesure de comprendre comment cela fonctionne. Donc pour le premier sera l'accent que je positionne. Et pour cela, nous allons utiliser le cosinus de l'angle. Et nous allons créer l'angle dans un peu. Et ensuite, nous allons le multiplier par le rayon. Nous créons essentiellement des points sur des triangles, puis tournons en fonction de l'angle de ces triangles, ce qui créera le cercle. C'est pourquoi la résolution est importante ici. Parce que plus la résolution est élevée, plus le blob sera circulaire, et moins ces points se trouvent, plus la valeur de résolution est petite, alors vous commencerez à voir plus d' un forme hexagonale ou losange ou même triangle si vous descendez jusqu'à trois. Et cela tourne avec des valeurs de négatives un à un parce que le cosinus de l'angle, quel que soit l'angle qui va me donner des valeurs négatives d'un à un. Je dois donc le multiplier par le rayon pour le pousser en fonction de la taille que je veux que le cercle soit. instant, je veux que le cercle soit aléatoire, un rayon aléatoire de 10 à 50. La largeur ou le diamètre de ce cercle va donc être compris entre 20 et 100. Et puis, pour moi, nous allons faire du sinus. L'angle. Multiplié par le rayon. Et puis pour le pousser au centre, nous allons l'avoir, car cela va se dessiner autour du point zéro. Nous allons donc devoir le pousser par le centre x et le centre y. Donc, quoi que je les définisse comme, c'est là que le centre du cercle sera à la fin. Et ensuite, l'angle va être défini à l'intérieur de la boucle for. Et ce sera moi. Donc chaque point est multiplié par l'angle de chacun de ces rectangles à l'intérieur du cercle. Disons donc que j'ai six points à résoudre. Ensuite, cette boucle va répéter six fois, qui signifie que l'IA sera multipliée par 16 ordre pour qu'elle complète l'angle 360. Mais au départ, nous ne savons pas quelle sera la résolution, donc nous ne savons pas quel angle mettre ici. Donc, pour l'angle, je vais juste appeler ça « tranche ». Et puis je vais le calculer ici. Et je vais juste appeler ça « tranche » et je vais le définir ici. Je vais juste l'ajouter au rayon. Nous n'avons donc pas trop de propriétés les unes sur les autres. Et ici, je vais diviser 360 par la résolution. 360 est la somme des angles dans un cercle, puis le diviser par la résolution va me donner l'angle de chaque espace que ce point va prendre. Et puis je dois convertir cela en radians parce que le cosinus et le sinus ont besoin de radians pour fonctionner. Et maintenant, il est temps de jouer la partie amusante qui montre et voir que ce que nous avons créé fonctionne. Maintenant, pour dessiner le cercle, nous allons devoir parcourir les flotteurs X et Y. Je vais donc suivre le même processus que celui que nous avons fait dans la fonction d'initialisation. Nous allons utiliser des co-sommets. La raison pour laquelle j'utilise des sommets courbes plutôt que des sommets est parce qu'ils sont plus lisses. sommet courbé prend donc deux valeurs comme un sommet. Et puis je vais lui donner X, y et moi aussi. Ce que vous devez savoir sur la fonction de sommet actuelle, c'est qu'elle a besoin des fonctions de sommet actuelles pour apparaître, car le premier sera le point de contrôle du premier, puis le second sera le premier de la courbe. Le troisième sera le deuxième de la courbe. Et puis le dernier point, qui est le quatrième, sera le deuxième point de contrôle. Donc, essentiellement une courbe de Bézier, mais elle est créée à l'aide d'une fonction de sommet courbe, sorte que chaque point est dessiné séparément. Maintenant, celle-ci va s'occuper d'une partie de ses sommets de courbe, points de contrôle et de ses points. Mais si je l'affiche, nous n'aurons pas de cercle complet. Nous devons d'abord le voir avant de pouvoir résoudre le problème. Donc, si je vais ici et que je crée un blob , puis j'initialise un objet. Nous allons avoir besoin d'une résolution. Je vais donc en faire six car c'est le plus facile à calculer pour nous. Et puis je ferai la largeur divisée par deux pour le centre et la hauteur divisée par 2 pour le centre y. Au lieu d'appeler deux méthodes ici, je vais appeler un filet ici. Ainsi, chaque fois que nous initialisons un objet, il est déjà initialisé. Et ensuite, je vais juste l'afficher ici. Et nous devons commencer la forme et cette forme pour n'importe quel sommet. Et nous la mettons en dehors de la boucle for car nous voulons commencer la forme , puis dessiner tous les sommets dont nous avons besoin, puis mettre fin aux formes. Ils vont donc tous être connectés car si vous mettez la forme Begin à l'intérieur d'ici, à l'intérieur de la boucle for et de l'entrée. Ensuite, chaque fois, il va commencer une nouvelle forme pour chaque itération. Bon, je vais commencer par un rayon de 100. Je ne vais pas commencer par le hasard, donc vous pouvez le voir clairement. Vous pouvez donc constater que nous n'avons que 1234 points tirés. Nous avons deux autres à dessiner. Donc cinq sont ici, et six sont ici. Ou en fait, c'est 1, 2 , 3, 4, 5 et enfin 6. Laissons tomber des points. Nous sommes donc en mesure de le voir. Je vais le dessiner à l'aide de cercles et il sera dans la même position. Et puis je lui donnerai une largeur de 20. Vous pouvez donc le voir clairement. Et nous allons en fait enlever le remplissage. Comment cela fonctionne et pourquoi nous n'avons pas toutes les courbes, c'est parce que la boucle for prend soin du premier point de contrôle de la première courbe. Le point numéro 0 a donc servi de premier point de contrôle. Et puis celui-ci sera le premier dans la courbe. Et ensuite, ce sera le deuxième de la courbe, et ce sera son point de contrôle. Maintenant, en regardant la seconde, il s'agit d'un point de contrôle pour cette courbe de départ, pour cette courbe de départ. Et puis c'est la fin de la courbe et il s'agit de ses points de contrôle. Et nous allons faire des ronds et des ronds. Donc, si vous allez dans cette partie, il n'y a pas de courbe ici car cela a servi de point de contrôle et c'est le dernier point. Ce que nous devons faire maintenant pour résoudre ce problème est d'ajouter trois autres points. Le premier sera donc avant la boucle. Et ce sera là le dernier point. Par conséquent, résolution moins 1. Et puis pour y aussi le dernier point. Et maintenant, si je l' exécute, vous pouvez voir que nous avons maintenant un point de contrôle pour cette courbe, qui est cette partie. Et parce qu'il est dessiné avant le premier, il comprend maintenant qu'il s'agit également d'une courbe et nous en avons besoin d'une autre après. Ce sera la sortie 0 et y à 0. Parce qu'après ce dernier point, j'ai besoin que cela existe pour que cette courbe soit dessinée. Il s'agit donc maintenant d'un point de contrôle pour cette courbe. Et maintenant, j'ai une dernière courbe à dessiner, c' est-à-dire celle-ci. Alors que le point de contrôle pour cela, il va être le suivant. C'est donc le numéro un. Et si je dessine ce sommet de courbe à x, ou pas nécessairement numéro un, mais en position 1 dans le tableau. Maintenant, si je fais ça, c'est terminé. Je vais donc m'en tenir, disons avec le sida parce que c'est sympa. Encercler ce n'est pas le cas, vous ne voyez plus beaucoup de points. C'est maintenant un bon point pour nous d'animer cela. L'une des raisons pour lesquelles j'ai voulu recréer un cercle en premier lieu est d'avoir un peu de variation. Et pour ce faire, c'est extrêmement simple. Il suffit de créer une méthode de mise à jour à l'intérieur de votre classe, puis de créer une variable. Vous pouvez l'appeler quoi que ce soit. Mais cela va être notre compensation. Et nous allons également faire une boucle. Et nous allons aborder chacun des points pour le déplacer. Donc, pour le premier, ce sera x à la position I plus une valeur aléatoire allant du décalage moins au décalage. Et il en va de même pour y. Nous augmentons donc ce qu'ils sont d'une valeur aléatoire. Il va donc bouger jusqu'à ce qu'il commence à déformer le cercle. Et je me suis senti aller ici et je le fais, eh bien, je dois le déplacer vers la fonction de tirage. Maintenant, je peux commencer à le voir bouger. Nous devons donc d'abord réinitialiser l'arrière-plan. Donc, il ne dessine pas. Et vous pouvez augmenter cette valeur jusqu'à la valeur souhaitée pour les décalages. Plus il est élevé, plus il sera déformé rapidement et vous ne retournerez pas au cercle. valeur faible comme 0,5 va conserver la forme de ce cercle pendant longtemps, mais nous permettra tout de même d'avoir des variations dans le périmètre du cercle. Et vous ne pouvez pas non plus animer, mais simplement décaler les valeurs ici ou lorsque vous l'initialisez. Non, pour cet exemple, cette première section porte sur la création ou la recréation du cercle. Mais pour la deuxième partie, lorsque j'ai parlé de créer cet exemple, nous allons parler un peu plus de la détection des collisions. La détection du gluten est donc très facile à comprendre. C'est tout simplement, surtout pour les cercles. Il s'agit simplement de trouver la distance entre le centre de deux cercles adjacents ou dans le même espace. Et voir si cette distance entre les deux centres est inférieure à la somme des deux rayons yeux. Donc, s'il y a moins que la somme des deux rayons, cela signifie qu'ils se croisent, ce qui signifie qu'ils entrent en collision. Nous voulons donc éviter cela. La façon dont vous pouvez vérifier si deux cercles se croisent est. En utilisant la fonction dist, qui obtient essentiellement la distance entre deux points. Créons donc ça ici. Je vais créer une méthode à l'intérieur de notre classe blob appelée collide. Et cette méthode va prendre car elle vérifie la distance entre lui-même et un autre objet de la même classe, puis nous devons également transmettre un blob. C'est donc une chose intéressante que vous pouvez faire à l'intérieur des classes où vous pouvez laisser l'objet de la classe actuelle que vous utilisez pour interagir avec une autre classe ou un objet d'une autre classe. Mais ici, nous n'en avons besoin que pour interagir avec lui-même ou avec des objets de la même classe. Nous n'avons donc pas besoin de créer plusieurs classes car nous avons déjà la classe elle-même. Et la façon dont nous pouvons l'utiliser est ainsi. Donc, si je flotte et que je l'appellerai d, cela va prendre le centre x et le centre y de celui-ci en ce moment. Nous pouvons donc simplement l'appeler CX et CY. Ensuite, il va vérifier la distance de ce cercle. Ainsi, les x et y de ce cercle deux et x et y de l'autre cercle que nous passons ici. Nous pouvons donc simplement faire d'autres points c, dx, et nous pouvons saisir tout ce que cet objet possède de propriétés. Nous pouvons donc faire le point cx et ensuite d'autres points voir Y. Et si d est inférieur à la somme des deux rayons, cela signifie le rayon que nous avons actuellement, qui est R plus autre point r. Et si cela se produit, Ensuite, je vais revenir vrai. Cela signifie entrer en collision. Donc, ce que je dois changer ici, c'est la valeur renvoyée car maintenant elle ne renvoie plus rien, elle renvoie en fait une valeur booléenne. Et sinon, ou si cela ne se vérifie pas, je devais retourner faux. Et nous n'avons pas besoin d'une autre déclaration ici parce que le retour sort de la fonction. Il renvoie la fonction. Vous n'atteindrez plus cette partie. Et maintenant, si je vais ici, je vais supprimer le blob que j'ai créé, puis je le transforme en ArrayList. Et je vais vous expliquer pourquoi je crée une ArrayList au lieu d'un tableau. Je vais donc appeler ça des blobs. Je vais l'initialiser ici. Je vais donc faire une nouvelle ArrayList de type blob. Et maintenant, en bas. Et c'est pourquoi j'utilise ArrayList. Je peux simplement ajouter des blobs sans savoir combien j'ai besoin. Donc je peux simplement faire des blogs, doter, ajouter, de nouveaux blob. Et je vais en faire une résolution six pour l'instant. Et puis je l'aurai à largeur aléatoire et à hauteur aléatoire pour le centre x et le centre y. Et maintenant, afficher chaque liaison va faire quatre po. Donc pour les blob, blob, blobs, c'est beaucoup de blogs et affichez-les. Maintenant, il va simplement les ajouter parce que nous n'avons pas encore détecté de collision. Pour détecter les collisions, nous pouvons simplement utiliser une boucle for pour parcourir tous les blogs existants par rapport au nouveau blogue ajouté. Je peux le faire en créant une boucle normale qui va de la taille de 02 blobs moins un parce que je ne veux pas atteindre la dernière. Le dernier, c'est quoi ? Je vais vérifier les autres dans le tableau. Et puis je vais m'incrémenter. Et ici, je dirai que je vais créer l'index du dernier bloc créé à l'intérieur de ce tableau. Donc, ce sera une taille négative des points blobs. Cela va donc aller moins cher que le dernier. Et ça va être le dernier. Et maintenant, je vais vérifier le blog à la position j l'un contre l'autre. Donc, l'œil de chat à pois de Bob. Donc, si le blob à la position j, qui est le dernier ajouté, collision avec ceux qui existent actuellement dans le tableau qui ne sont pas le dernier, bien sûr, j'ai besoin que vous supprimiez ce blob. Maintenant, chaque fois que cela ajoute un blob, il va vérifier s'il entre en collision avec l'un des objets existants, puis il va le supprimer pour qu'il n'existe plus. Et puis il va faire une boucle et le faire encore et encore. Et maintenant, vous pouvez voir que rien n'entre réellement en collision. Si je retourne maintenant à la classe et que je change ça au hasard de 10 à 50. Et c'est pourquoi j'utilise un nombre plus petit car ils ont un très petit écran. Et maintenant, nous avons un tas de cercles qui ne se heurtent pas. Si je retire ceci, quels sont les guides, je peux voir qu'ils ne se heurtent pas. La seule fois où ils vont entrer en collision, comme lorsqu'ils se déforment. Nous pouvons réduire la vitesse pour cela parce qu'ils sont maintenant plus petits, donc c'est plus évident. Vous pouvez donc simplement réduire la vitesse et maintenant vous ne les voyez plus bouger autant. Maintenant, vous pouvez simplement les colorer au hasard. Je vais prendre un tas de couleurs que j'ai. Il peut choisir les couleurs que vous voulez. Et j'ai également choisi une couleur pour l'arrière-plan. Je vais donc m'en servir ici. Et par ici. Si vous êtes en train de réinitialiser ici, vous n'avez pas besoin de celui-ci. La seule raison pour laquelle je l'utilise ici, c'est parce que chaque fois que c'est R1, vous pouvez apercevoir l'arrière-plan qui se trouve ici. Donc, si vous avez un fond noir, vous pouvez l'apercevoir au début. Peu importe, mais si vous enregistrez chaque image, vous allez la voir. Et puis j'ai mes couleurs ici. Je peux simplement définir la couleur ici, puis colorier tous les motifs au hasard à partir du tableau de charbons. Et puis l'index sera aléatoire de 0 à la longueur du point de couleur. Et la raison pour laquelle je monte deux couleurs de cette longueur, c'est parce que je vais le transformer en entier puisque nous ne pouvons pas avoir de float pour les indices. Et puis ça va le planter. Donc, quel que soit ce chiffre, il sera moins un. Et maintenant je vais passer ici et la méthode d'affichage, je vais remplir la couleur et vous verrez les couleurs aléatoires. Vous pouvez également supprimer le trait si vous le souhaitez ou le rendre blanc. Ils lui donneront également un aspect différent. Dans la prochaine leçon, nous parlerons de la recréation. Les rectangles sont l'un des moyens de recréer des rectangles. 3. Texture 01 : Recreating carrés: Dans cette leçon, nous allons créer un tas de rectangles en utilisant ce qui ressemble à des lignes dessinées à la main. Au lieu d'utiliser la fonction native dans le traitement pour commencer à comprendre comment les lignes des rectangles sont créées. Ensuite, il va falloir commencer par ces lignes. D'abord. Je vais créer une fonction normale. Et ici, avant de créer une classe pour ce nouvel objet, et je vais l'appeler vague. Cela garantit également l'utilisation d'un sommet courbé afin de créer ce mouvement fluide. Parce que les sommets ont tendance à être très angulaires et nous aurons également besoin d'une boucle for-car nous allons dessiner, car les co-sommets sont essentiellement des points et nous aurons besoin de plusieurs points pour dessiner une ligne. Donc, au lieu d'utiliser la fonction de ligne, nous utilisons des points pour dessiner la ligne que nous allons utiliser pour dessiner des rectangles. Pour cela, nous aurons également besoin d'une résolution et d'une position x et y. Donc maintenant, si j'appelle Wave ici, je peux simplement utiliser une résolution de six, disons. Et puis je peux commencer à 0 pour x, puis pour y, il sera divisé en hauteur par deux, donc au centre, verticalement. Et en fait, commençons la résolution ici parce que nous allons l'utiliser plusieurs fois. Et puis une vague aura également besoin d'une largeur ou une ligne de points aura également besoin d'une largeur. Je vais donc créer une largeur ici, ou une valeur pour la largeur. Et puis, plus tard, lorsque nous allons verticalement, nous allons aussi prendre la hauteur. Mais pour l'instant, nous allons dessiner une ligne horizontalement sur l'écran afin de voir comment cela fonctionne réellement. Je vais donc juste définir avec un v ici. Faisons donc la largeur de l'écran. Et ensuite, nous aurons également besoin d'un écart. La raison pour laquelle nous allons avoir besoin de cet écart, parce que nous avons des points, mais nous devons savoir à quelle distance ils vont être afin de tracer la ligne le long de la largeur si nous le demandons. Donc d'abord, puiser à partir de 0,02 largeur, nous allons avoir besoin de savoir quel sera l'espacement entre chacun des points et que nous pourrons trouver. Donc, si je ne fais que définir l'écart que nous allons trouver en divisant la largeur par la résolution. Donc, quelle que soit la largeur, si je la divise par le nombre de points que j'ai, alors j'obtiens la quantité d'espaces pour espacer les points. Essentiellement comme dessiner une grille. Ainsi, lorsque vous dessinez une grille, vous voulez savoir quelle sera la largeur de chaque cellule. Pour savoir combien de mouvement vous allez devoir aller vers la droite ou vers le bas afin de créer ces cellules dans la grille. Nous faisons donc la même chose, mais nous allons le faire avec juste une ligne. Donc la forme initiale puis la forme de fin parce que nous utilisons des sommets courbes. Et puis je vais faire une boucle. Et puis ici, il sera courbé au sommet exactement ce que nous faisons avec les grilles. Je vais le faire, je le multiplie par l'écart, qui est généralement la largeur de la cellule. Donc exactement comme une cellule dans une grille ou comment dessiner des grilles. Mais nous devons y ajouter x car x ne sera pas toujours à 0 comme une grille, nous allons le déplacer sur l'écran. Donc exactement comme nous l'avons fait avec Cx et CY pour le cercle. Mais cette fois, ça va être en ligne. Et là, ce ne sera que pourquoi ? Parce que nous ne le déplaçons que sur la ligne horizontale. Maintenant, si je le dessine, j'ai la limite. Mais comme vous le remarquez, c'est exactement comme ce que nous avons fait avec les cercles. Il manque un point de contrôle à celui-ci et par conséquent, il ne dessine pas le sommet de la courbe ici. Donc, pour le dessiner à partir du point zéro, je vais devoir ajouter un sommet courant avant lui pour agir comme point de contrôle. Et cela va être un écart plus x. Nous n'avons pas besoin de multiplier par moi parce que ce sera le premier. Et puis pour Y, on va juste faire un Y pour l'instant. Nous avons donc maintenant un point de départ ici. Et pour nous le voir, cela va aussi dessiner un cercle comme nous l'avons fait auparavant. Et je vais le mettre dans la même position. Et ensuite, je vais faire 10 ans. Vous voyez donc les points. Nous voyons que nous avons des pièces partout où nous en avons besoin. Et ensuite, pour nous de dessiner le dernier point. Parce que nous n'avons que les lacunes. Et dans une grille, vous ne dessinez que depuis un coin, puis le rectangle ou la cellule va nous dessiner, ce dernier va également sécher. Mais ici, nous n'avons pas de rectangle, nous avons juste besoin de points. Je vais aussi dire que je suis moins ou égal, augmenter. Je vais avoir un point à la fin aussi. Et puis pour dessiner celui à la fin, je vais juste dire le sommet actuel chez Rey, qui est le dernier multiplié par l'écart. Et puis ça va être Y. Et maintenant, nous l'avons aussi. Oh, et n'oubliez pas d'ajouter le x car maintenant nous ne faisons que dessiner à partir de 0, donc ça n'a pas d'importance, mais plus tard, ça va avoir de l'importance. Donc maintenant, si j'ajuste la largeur, alors faisons-en un 100 et lançons ça. Ensuite, nous pouvons voir que c'est ici. Et si je change la position x en largeur divisée par deux, maintenant, nous pouvons voir qu'elle se déplace car maintenant nous avons ajouté x à chacun d'entre eux. Nous veillons donc à ce que tout bouge avec le X dont nous avons besoin. C'est donc en plus de l'endroit où l'axe va se produire. Et maintenant c'est le cas, vous le rendez plus intéressant. Et pour créer la forme de la vague, nous allons rencontrer au hasard chacun de ces points. Je vais le faire pour le Y pour l'instant. Et cela va être une valeur aléatoire. Je vais appeler ça le décalage V. En fait, il l'a changé en décalage Y. Et puis ici, je vais faire une charge deux fois décalée, et donnons une valeur de quatre. Donc, le hasard va passer de 0 à n'importe quelle valeur à quatre. Et je ne recommanderais pas de copier-coller, mais je copierai et collerai pour raccourcir cette vidéo. Et en fait, certains des cercles, nous n'en avons plus besoin. Maintenant, chaque fois que je fais ça, tu verras que ça ressemble davantage à une vague. Donc, allons en fait agrandir ça. Faisons une largeur, et commençons à partir de 0 pour que vous puissiez le voir plus clair. Et comme nous n'avons qu'une résolution de six, les points sont trop espacés. Donc, si je fais ça, disons 16, simplement en ajoutant un, on peut le voir plus sinueux. Et ensuite, si j'augmente le décalage pour laisser dire 10, et vous pouvez voir plus de courbes dans notre ligne. Nous pouvons maintenant utiliser cette ligne pour créer nos rectangles. Et de cette façon, il sera plus dessiné à la main, mais avec un décalage des locataires trop. Je vais donc le réduire à quatre. Ensuite, je réduirai aussi la résolution à six, car plus il est espacé, plus il ressemble à une sensation dessinée à la main. Parce que chaque fois que vous le dessinez, il n'est pas logique que nous soyons tous très bancaux et nous dessinons avec les décalages Tumaini. Mais généralement, la façon dont nous dessinons consiste à faire un mouvement fluide. Il n'a donc pas toujours l'air très bancal comme avant. Maintenant, pour créer un rectangle, je vais au lieu d'avoir juste de la largeur, d'avoir de la largeur et de la hauteur. Et puis j'aurai aussi un écart x. Et pourquoi Gap ? Et pour celui-là, il va y avoir un écart x. Et puis pour l'autre, il sera divisé par Rey, qui est divisé en hauteur par race. Et puis les hauteurs, je vais la diviser en hauteur par deux. Et pour la largeur, je vais le faire aussi avec deux pour que nous puissions le voir parce que si je fais tout l'écran, alors vous ne verrez qu'une partie de la ligne. Et maintenant, nous allons corriger cette fonction en ajoutant les lacunes ici. X gap et ensuite pourquoi l'écart. Et enfin, nous allons avoir un décalage x et un décalage y. Vous pouvez avoir le même décalage pour tous, mais je vais les avoir différents parce que vous pourrez jouer avec eux plus tard. Et vous pouvez aussi juste le nettoyer. Vous pouvez ainsi voir tous les paramètres. Vous pouvez simplement appuyer sur Entrée. Et ensuite, si vous effectuez la commande T, elle le formate pour vous. Il a donc maintenant la même indentation que l'autre. Et maintenant, nous pouvons réparer cela pour en faire un x cap pour tous ces éléments. Et puis, au lieu de simplement y, y gap plus y et ici aussi, je vais être multiplié par y plus y. Et il en va de même pour celui-ci, mais celui-ci va être des époques, multipliez-le par y gap plus y. Ensuite, nous pouvons ajouter le décalage, chacun de ceux-ci. Je vais donc faire plus un décalage X aléatoire. Et ici plus un décalage Y aléatoire. Vous pouvez également faire la même chose ici. Et le dernier. Maintenant, je sais que nous avons créé la même chose pour x et y , donc nous déplaçons une sorte de diagonale que vous êtes en ce moment. Mais nous n'allons pas utiliser cette fonction d'onde horizontalement et verticalement en même temps. Nous allons l'utiliser séparément pour certaines lignes verticales et horizontales, mais nous utilisons la même fonction. Vous pouvez certainement faire une ligne horizontale, puis une fonction distincte pour une ligne verticale. Mais vous allez voir que c'est très similaire à chaque fois. Mais de cette façon, vous ne créez qu'une seule fonction , puis vous l'utilisez pour les lignes verticales et horizontales. Et la façon dont vous pouvez le faire est ainsi. Disons donc que j'essaie la mort à partir du point zéro. Et puis pour celui-là aussi, je suis en train de le sécher. Donc à partir de 00 en gros, c'est x et y. Et puis la résolution va rester la même. Et ensuite, pour le premier, qui est x gap, nous allons utiliser le cap x et l'écart y. Et enfin, une valeur pour chaque décalage. Je vais donc continuer à le faire. Et maintenant, c'est l'astuce. Pour l'instant, c'est ce que nous avons. Et si je fais cela, ce sera une ligne diagonale, comme un sac parce que nous utilisons x et y ensemble. Ainsi, vous pouvez créer une ligne horizontale ou verticale uniquement en créant la position de la première ligne de cette ligne. Donc c'est x et y. Et ensuite, pour le cap x et l'écart y, vous n'utiliserez qu'un seul d'entre eux. Donc pour pourquoi l'écart, ça va être 0 parce que je n'ai rien à diviser. Et puis pour le décalage X, parce que nous le dessinons horizontalement, nous n'avons pas besoin d'un décalage pour x, nous avons besoin d'un décalage pour y. Et maintenant, si je dessine ceci, il va être aligné à 000. Donc, si je le déplace, la hauteur est divisée par deux. Donc, au centre de l'écran, nous pouvons voir qu'il fonctionne pour s'assurer qu'il fonctionne également pour les lignes verticales. Je vais copier ça et je vais laisser ça à 0. Mais utilisez un large écart. Et puis le décalage pour le x, il sera quatre. Et le décalage pour y va être 0. Et c'est la limite ici. Je dois donc le déplacer en largeur divisée par deux pour que vous puissiez le voir. Et c'est la ligne verticale. Nous savons donc que cela fonctionne pour les lignes verticales et horizontales. Il est maintenant temps de créer notre classe, de créer le rectangle. Je vais créer un nouvel onglet, et je l'appellerai simplement poly. Donc, pour le polygone, vous pouvez l'appeler n'importe quoi. Je ne vais pas spécifier cela comme rectangle, mais n'hésitez pas à le faire. Vous pouvez désormais définir le polygone en utilisant uniquement la résolution, puis spécifier la largeur et la hauteur de manière aléatoire. Vous pouvez également utiliser XY, largeur et hauteur avec une résolution. Donc, en créant un rectangle, je vais créer les deux constructeurs. Le premier sera donc aléatoire pour que nous puissions voir comment cela fonctionne. Je vais donc faire de la résolution ici. Et bien sûr, il doit être visible ici aussi. Il faut aussi le définir là-haut. Maintenant, Raz va être égal au repos de soulignement pour x. Nous allons passer de 02 largeurs au hasard. Et puis, pour y, ça va être une hauteur aléatoire. Et ils vont également être définis ici. Et définissez également la largeur et la hauteur. Ce sont donc les propriétés de n'importe quel rectangle. Et la largeur et la hauteur vont être, parce que je voulais qu'ils soient des carrés pour l'instant parce que je pense que les carrés sont plus faciles à utiliser. Ensuite, les rectangles sont simplement d'une hauteur différente de la largeur. Je vais faire de 20 à 100. Et ensuite, pour la hauteur, je vais la rendre égale à la largeur. Après cela, je vais tirer tout ça dans cette classe. Maintenant, nous l'avons ici, puis Commandez T ou contrôlez T sous Windows pour le formater, juste pour le nettoyer. Et puis a terminé la méthode d'affichage. Nous allons créer un rectangle comme référence. Je vais donc faire ce rectangle x à x et y, puis en largeur et en hauteur. Ensuite, je vais créer ces rectangles. Je vais donc les attraper. Et ensuite, je vais définir l'écart X ici. Et pourquoi Gap aussi. Enfin, le décalage sera de quatre. Maintenant, nous n'en avons plus besoin. Nous n'en avons pas non plus besoin pour l'instant. Et au lieu d'utiliser ces valeurs, je vais utiliser x et y. Donc pour la première, la première sera là où se trouvent x et y. C'est donc le coin de n'importe quel rectangle. Et c'est notre référence ici. Donc, X et Y vont être le coin, alors c'est là que nous allons commencer. Et il s'agit de l'horizontale et ensuite il s'agira d'un écart x. Et puis il n'y a pas, non pourquoi les écarts ici, parce qu'il s'agit d'une ligne horizontale. Et puis, nous n'avons pas besoin d'un décalage pour x parce que. Il suffit de le décaler sur l'axe Y. Et ensuite, pour celle-ci, nous allons tracer la ligne verticale à droite. Donc, ce que nous allons faire, c'est ajouter la largeur à x. Cela va essentiellement la pousser par la largeur du carré ou du rectangle divers. Et ensuite, nous aurons 0 pour x gap. Et alors pourquoi Gap ? Encore une fois, pour chaque ligne horizontale, il y aura un cap X et un décalage Y. Pour chaque ligne verticale, il y aura un grand écart et un décalage X. Le décalage sera donc pour le x et y sera égal à 0. Maintenant, pour le plus bas, il sera en position x car nous allons commencer à partir du même point que celui du haut. Et ensuite, nous allons ajouter la hauteur à y parce que nous sommes ici et nous devons descendre ici. Il y aura un capuchon en x car il s'agit d'une ligne horizontale. Et ensuite, il va y avoir un décalage Y. Et pour le dernier, il y aura X et y parce que nous partons du même coin de départ. Parce que pour les lignes verticales, nous allons de haut en bas. Et ensuite, il n'y aura pas de décalage ni d'écart pour x, puis un écart large, puis Offset et 0. Ok, le polygone Paul, ici. Et Paul II va égaler un nouveau polygone ou une classe poly. Ensuite, nous prendrons la résolution. Je vais donc simplement commencer par, faisons-en cinq. Et ensuite, nous allons le dessiner à la marge, à la marge. Et je vais le faire ici. Je vais donc créer une marge pour que vous puissiez la voir. Parce que si je n'en fais que 000, ça va parfois être caché sur les côtés. Donc, pour qu'il soit plus clair, que nous le voyions, alors je ferai juste une marge de 50, voire 20, c'est très bien. Et ensuite, je vais faire avec moins la marge. Nous avons donc également la marge sur le côté droit. Et puis la même chose pour la hauteur. J'ai oublié ça. Je n'ai pas encore créé ce constructeur, donc nous allons le faire, le plus aléatoire. Il ne définira donc que la résolution. Et ensuite, je vais dessiner. Je vais l'afficher ici. Ce que vous voyez en dessous est la référence ou le rectangle, vous pouvez donc voir qu'il le suit parfaitement. Maintenant, si je retire cette pièce , nous pouvons voir notre rectangle. Et plus il est petit, plus il sera déformé parce que la résolution est fixée pour tous. Donc, si vous réduisez simplement la résolution, cela ressemblera davantage à un look dessiné à la main. Cela va très bien fonctionner. Si j'ai une ArrayList, disons, de polygones. Ensuite, j'ajouterai une nouvelle liste. Je dois créer une boucle. Donc, disons 10, alors ça va bien marcher. Il n'est pas important de connaître la position exacte X et Y, ni la largeur et la hauteur. Cependant, si je veux créer quelque chose comme ça, je vais devoir savoir précisément où vont se trouver les x et y ou si je veux créer une grille en utilisant ces rectangles que je vais devoir être plus spécifique en définissant les x et y ainsi que la largeur et la hauteur de chacun des rectangles. Je vais donc créer un autre constructeur, et cette fois je vais simplement copier et coller ça. Et j'ajouterai la valeur X. Et puis j'ajouterai aussi y, largeur et enfin hauteur. Nous avons donc les propriétés de base de notre rectangle à dessiner. Et maintenant, je vais changer tous ces éléments pour avoir une largeur et un soulignement XOM y. Et je vais changer cela en hauteur pour qu'il puisse définir plus tard lorsque nous voulons le créer. Et si je vais ici et moi, disons que je veux créer un fil ou une ligne. Rectangles. Ensuite, je peux simplement le faire multiplié par la largeur divisée par 10. Ensuite, nous ferons la hauteur divisée par deux pour la position de leur hauteur. Ou si la position Y. Et puis tous font la largeur divisée par 10. Et celui-là aussi sera divisé en largeur par 10, soit la hauteur de chacun des rectangles, ce qui les rend carrés. Et maintenant, vous avez une ligne de rectangles. Notez également que cela est tiré du coin. Donc, si vous devez le pousser vers le haut pour que la hauteur soit parfaitement au centre. Vous devrez soustraire la largeur divisée par 10, divisée par 2. Et ça va être exactement au centre. Parce que divisé par 10 est la largeur et la hauteur de ces rectangles. Et le diviser par 2 va simplement pousser ce coin vers le haut de la moitié de la hauteur, ce qui fait que le point central passe maintenant au centre de ces rectangles. L'autre moitié de la leçon que vous pouvez créer à l'aide du cours de récursions. Vous n'avez pas besoin de suivre ce cours parce que je vais essayer de l' expliquer aussi bien que possible dans un court laps de temps. Mais, bien sûr, il est un peu absurde de suivre tout ce cours et de le classer dans cette leçon et de s'attendre à ce que vous compreniez tout si vous ne comprenez pas ce que sont les récursions. De plus, les autres parties de certaines leçons ne seront que exemples pour vous montrer comment utiliser ce que nous créons pour la texture. Dans d'autres exemples que nous avons créés auparavant ou simplement dans votre travail général. Vous pouvez donc l'utiliser en utilisant le cours d'introduction à l'art génératif. Cela signifie que vous pouvez l'utiliser pour créer une grille de ce type de rectangles. Ou vous pouvez faire ce que je vais faire en ce moment pour remplacer ce que nous avons utilisé comme rectangles ou les rectangles primitifs que nous avons utilisés dans le cours des fonctions récursives par ce rectangle que nous venons de créer pour y ajouter de la texture. Ainsi, les fonctions récursives récursives répètent le même code encore et encore à l'aide de fonctions imbriquées. Donc, au lieu d'utiliser des boucles, nous allons simplement appeler la fonction en elle-même, ce qui peut produire une boucle infinie. Mais si vous le contrôlez avec une condition, alors tout va bien et vous pouvez créer de très bons résultats avec elle. Nous allons faire l'exemple le plus simple parmi ceux de la classe des fonctions récursives, et c'est l'exemple des carrés. Donc ce que je vais faire ici, c'est supprimer ce que j'ai créé ici et supprimer la méthode d'affichage, mettrai dans le tiroir pour qu'il soit plus logique que nous séchions à l'intérieur de l'écran. Mais je n'appellerai pas de boucle chaque année. Pour le faire très rapidement. Ce dont nous allons avoir besoin, c'est d'une méthode que vous pouvez appeler n'importe où, mais nous allons l'appeler générer car elle va générer une nouvelle génération à chaque fois. Et ensuite, nous allons lui donner un numéro. Et ce nombre sera le nombre de générations. Et puis, à l'intérieur, nous aurons une ArrayList que je vais appeler temporaire. Et puis cette ArrayList va avoir les polygones qui seront la prochaine génération. Et ils vont être de type Holly ou notre classe que nous avons créée. Et puis parce que j'ai dit que nous allions appeler la fonction en elle-même pour créer cette boucle infinie. On va juste appeler ça ici. Et puis je vais passer à la dégénérescence parce que nous allons également décrémenter la génération à chaque fois. Et puis je vais le faire, ou je vais demander à cette fonction de ne faire que ce que je lui demande de faire à l'intérieur de cette condition si la génération est supérieure à une. Parce que je veux éviter la boucle infinie. C'est donc un peu similaire à une boucle while d'une certaine manière parce qu'une boucle while a tout ou a la variable thème ici ou avant elle. Et puis il y a une condition, puis il y a un incrément à l'intérieur de cette boucle. Et notre boucle est toute cette fonction. Nous allons donc le mettre ici. Et nous allons décrémenter à chaque fois. Donc, si je mets ici cinq générations , ça va le faire pour la première. Elle va vérifier si elle est supérieure à 15 est supérieure à un. Cela va diminuer une fois que tout sera fait ici. Et ensuite, il sera quatre. Et une fois qu'il en atteint un, il vérifiera s'il est supérieur à un, ce n'est pas le cas. Donc, ça va s'arrêter. Et maintenant à l'intérieur de cela, nous allons parcourir tous les polygones qui se trouvent à l'intérieur de son ArrayList. Pour le moment, nous n'avons rien, alors ajoutons-en un à cela. Donnons une résolution. Donc, je vais appeler ça la résine de polya, appeler ici ou une définition ici. Et n'en faisons que trois. Et puis je vais dessiner un grand rectangle de la marge, de la marge à quoi ? Marge moins et hauteur moins marge. Notre équipe a oublié d'ajouter une nouvelle MyClass. Maintenant, nous avons un de nos rectangles et parce que nous l'affichons ici, si je frappe Run, alors nous l'avons. Également. Je vais devoir multiplier cela par deux parce que je le pousse par la marge, puis je le pousse par la marge, mais c'est ici, donc je dois le pousser par une marge multipliée par deux. Et maintenant, nous avons un rectangle ou un carré. Donc, ce que je fais ici est en boucle. Je vais juste faire Paulie, Paulie dans Holly's. Je passe en revue tous les éléments de la liste ArrayList, et je vais les diviser ici. Maintenant, nous n'en avons qu'un. Nous allons le diviser ici. Et plus tard, je ferai tout ce que les pollicis font quoi que ce soit en temp, car nous allons tout créer à l'intérieur de la ArrayList temporaire. Et puis je vais tout prendre à l'intérieur de tmp et changer ou écraser tout ce qui est dans les polys. Nous avons donc maintenant une nouvelle génération et la liste ArrayList de Pauli. Et plus tard, nous allons parcourir tous ces éléments et ensuite les diviser à nouveau. Ce sera donc une boucle de division. Et pour ce faire, vous pouvez tout d'abord l'ajouter au tableau temporaire, mais vous allez ajouter un nouveau polygone. Et le nouveau polygone va représenter une fraction de la taille du polygone d'origine par rapport à la première génération que nous saisissons. Donc, pour cela, ce sera des époques poly. Et puis nous allons, en fait, je vais changer ça en p parce que ça va être très, très long. Je vais donc saisir l'exposition parce que pour la première fois, je veux qu'elle soit à la même position x et y. Et je vais aussi prendre la position Y. Mais ensuite, je veux avoir la largeur puis la hauteur. Je vais diviser ça par deux. Et puis je vais appeler Generate à l'intérieur de la configuration. Et je vais le faire, donc je vais lui donner deux générations. Ok, donc j'ai fait une erreur, ce qui est de mettre ça en dehors du si conditionnel, mais j'ai dit que c'est comme une boucle while et que la boucle while décroît à l'intérieur de la condition. Donc maintenant, si je le dirige, nous l'avons. Maintenant, vous n'avez plus la première génération, vous n'avez que la deuxième. Si je le fais trois fois, vous verrez que ce n'est pas seulement un quart de la taille de la plus grande, mais aussi de la plus petite. Je vais donc revenir à deux et créons les quatre autres. Parce que nous voulons transformer chacun des carrés en quatre carrés différents. Maintenant, pour le second, nous nous déplaçons par largeur divisée par deux de l'original parce que nous sommes en boucle tout ce qui se trouve au début. Il s'agit d'une question ici. Vous pouvez donc les voir et nous pouvons comprendre ce qui se passe. Il a donc commencé le premier ici, puis nous ne sommes allés qu'à mi-chemin de la largeur et à mi-chemin de la hauteur. s'agit donc que d'un quart du carré d'origine. Et puis, pour le second, ça va commencer par ici. Donc, la moitié de la largeur. Je vais donc faire tout ce que x est plus la largeur divisée par deux. Donc la largeur du point p divisée par deux, le reste va rester le même. Donc, si je fais deux générations, vous verrez que cela fonctionne bien. Je ne ferai pas non plus de remplissage. Vous pouvez donc voir les lignes. Et maintenant, pour la troisième, je ne bougerai pas la largeur ou je ne bougerai pas horizontalement, mais je me déplacerai verticalement. Ce sera donc y plus la hauteur divisée par deux. Et puis le dernier va pousser à la fois la largeur et la hauteur. Maintenant, nous en avons quatre. Donc, si je fais ces trois générations, vous verrez que cela réduit de moitié. Et puis, si je fais quatre générations, il s'agit de les couper ou de les couper au quart du carré d'origine, et ainsi de suite. Mais pour rendre cela un peu plus intéressant, ce que vous devez faire, c'est de ne pas couper tous les carrés. Donc, si je flotte, réentendez juste une valeur aléatoire de 0 à un, puis je vérifie si r, donc je lui donne une probabilité de 50 pour cent qu'elle soit divisée. Et puis les 50 % restants, les carrés resteront les mêmes. Il va donc rester à P dot SPDY car il aura toute la largeur et la pleine hauteur. Maintenant, vous pouvez voir que c'est plus intéressant parce que cette partie a été divisée pour toutes les générations. Celui-ci n'a été divisé que deux fois. On n'a donc divisé qu'une seule fois. Vous pouvez l'exécuter autant de fois que vous le souhaitez et vous obtiendrez toujours des résultats différents. Vous pouvez également modifier la probabilité ici de 50 % pour chacun d'entre eux. Supposons donc que vous vouliez que la majorité soit réduite, alors vous ferez 70 % pour que cela soit réduit. Donc, si r est inférieur à 0,7, vous verrez qu'un plus grand nombre d'entre eux seront coupés. Et si vous voulez colorer cela, vous pouvez simplement ajouter un tableau de couleurs à cela. Nous pouvons donc simplement remplir cela avec de la couleur car les lignes ne dessinaient pas réellement un rectangle. Nous essayons juste un tas de lignes pour que vous puissiez simplement dessiner des rectangles et ceux-ci seront colorés. Vous pouvez également ajouter des marges à ces derniers. Donc, si je fais x moins 2 ou x plus deux en fait. Donc, si je viens ici et que je fais plus deux pour eux, puis moins 2 pour eux. Comme si j'avais ajouté la marge de deux, puis j'ai ajouté une marge supplémentaire pour celle-ci. Donc, si je fais ça maintenant, vous pouvez voir qu'il y a un peu d'espace. Ensuite, je peux ajouter une autre marge ou une marge supplémentaire uniquement pour les rectangles intérieurs. Vous pouvez le voir un peu plus clairement et vous pouvez supprimer le trait de celui-ci. Parce que maintenant, nous voyons deux fois plus d'AVC. Vous ne pouvez donc pas faire de trait ici, puis un coup de noir pour celui-ci. Et nous avons un nouveau rectangle inventé utilisé et des fonctions récursives. C'est à peu près tout ce que vous devez savoir sur cette partie de la texture. Dans la prochaine leçon, nous parlerons plus de la couleur, particulier de l'interpolation aléatoire des couleurs. 4. Couleur 01 : Interpolations aléatoires en couleur: Dans cette leçon, nous commencerons à parler de la couleur, en particulier de l'interpolation des couleurs. J'en ai parlé dans un autre cours. Mais je voulais le partager ici pour que nous ayons une accumulation de façons de colorer votre design. L'interpolation des couleurs crée donc essentiellement un dégradé une couleur de votre choix à une autre en fonction de votre mappage de valeur. Donc, en fonction de l'heure, qui est le troisième argument pour cette fonction ou pour la couleur des lèvres de cette méthode. Cependant, aujourd'hui, nous n'allons pas mapper l'heure ou la valeur du troisième argument à quoi que ce soit à l'écran. Nous allons simplement utiliser le hasard pour jouer avec les couleurs créées par cette méthode. Car cette leçon se penchera directement sur l'exemple, car ce ne sera pas un exemple très difficile. Et nous allons utiliser certaines des techniques que nous avons utilisées dans les exemples précédents. Je vais donc créer un nouvel onglet car nous allons créer une classe d'agents. Pour cet agent, Tom va afficher des arcs, des cercles et des lignes. Pour cela, nous allons avoir besoin d'une position x et y et d'un rayon. Et ensuite, nous utiliserons certainement la couleur. Je vais donc créer trois couleurs. Premièrement, j'appellerai simplement l'appel, et les deux autres, je vais appeler l'un et la culture pour la première couleur, le dégradé et la deuxième couleur. Maintenant, dans le constructeur, nous allons initialiser nos x et y ainsi que le rayon. Donc, x va être une valeur aléatoire. Et faisons-le de la marge à la largeur moins la marge. Et je vais définir la marge. Juste ici. Y va être la même chose, mais avec la hauteur. De cette façon, nous avons de l'espace autour de l'écran. Rien n'est donc entassé jusqu'aux frontières. Et puis r ne sera qu'une valeur aléatoire de 3200. Et maintenant pour les couleurs, commençons par le noir et le blanc d'abord. C'est comme ça que j'aime commencer. Chaque fois qu'un design quelque chose de nouveau, je ferai la première couleur, soldats blancs à colorier. Et puis 255 pour le blanc. Et puis deux vont être noirs. Et maintenant, nous allons définir la méthode d'interpolation des couleurs. La méthode s'appelle donc Blurb color. Et puis il prend la première couleur, la deuxième couleur, et je prends la valeur temporelle. Par conséquent, si vous souhaitez mapper cette valeur de 0 à la largeur de l'écran , les couleurs changeront de ce point à l'autre point en fonction des formes encore définies. Par conséquent, si toutes vos formes sont entassées sur le côté droit de l'écran , elles auront la deuxième couleur. Parce que cette valeur va de 0 à 10 va être la première couleur et l'une sera la suivante. Et puis tous les nombres entre les deux seront les couleurs comprises entre 255, soit blanc et 0 qui est noir. Mais ici, je vais juste dire que je veux une valeur aléatoire de 0 à un. Et ça va faire l'affaire pour nous. Et maintenant, affichons quelque chose. Commençons par un cercle. Et je vais lui donner X et Y , puis le rayon. De plus, j'utilise un rayon et des cercles même si cela est considéré comme le diamètre. Donc, même si j'initialise un rayon ici, je l'utilise toujours ici comme diamètre. Donc, vous pouvez aussi le faire multiplié par deux, mais je vais le garder comme ça. Et puis la couleur. Le remplissage sera donc ce que nous avons défini avec la méthode d'interpolation des couleurs. Revenons maintenant ici et définissons un tableau d' agents d'Adrian ou ArrayList. Et ensuite, je vais aller ici. Et je vais faire en sorte que les agents ajoutent un nouvel agent. Et puis j'y vais. Ils sont tous. Donc, pour l'agent, nous appellerons ça des agents agents. Et ensuite, je vais l'afficher. Comme vous pouvez le constater, nous obtenons un remplissage aléatoire de 0 à 255. Cela ressemble au choix d'une couleur aléatoire allant du noir au blanc ou de 0 à 255 lorsque vous le faites ici. Donc, en disant aléatoire de 0 à 255, et nous n'avons pas besoin de faire le 0. C'est la même chose. La seule différence, c'est qu'il va clignoter car nous avons ajouté le remplissage ici. Donc, si je le fais ici, et que nous devrons le convertir en entier parce que les couleurs sont en fait un entier. Et c'est la même chose. Cependant, si je choisis différentes couleurs du blanc et du noir, nous obtiendrons un résultat très différent. Définissons donc un tableau de couleurs. J'en ai un que je vais juste définir ici. Et maintenant, au lieu d'obtenir ou de définir manuellement les couleurs, nous pouvons simplement obtenir une valeur aléatoire à partir du tableau. Nous avons donc un tas de couleurs ici que je peux choisir. Et nous le ferons de la même façon que nous avons déjà fait la coloration aléatoire. Nous obtenons donc un index aléatoire pour le tableau. Et nous devons le transformer en entier car les indices ne peuvent pas être flottants. Je peux donc faire des appels de longueur de point. Et maintenant, à cause de cela, il va s'agir d'un entier et ça va fonctionner. Il en va de même pour l'autre. Vous pouvez également utiliser deux rayons différents pour ces derniers. Vous pouvez également choisir manuellement les couleurs de votre choix. Mais je vais le garder au hasard. Et ensuite, ici, ça va rester le même. Et le remplissage va prendre cet interpolateur de couleurs. Maintenant, si je cours ça, nous allons commencer à voir plus de couleurs. Maintenant, certaines de ces couleurs comme cette couleur de film ou cette couleur vert foncé ne sont pas dans mon tableau, mais parce que nous obtenons une couleur et interpolons, cela crée un dégradé de cette couleur à la seconde couleur. Il saisit tout ce qui se trouve au milieu entre ces couleurs. Disons donc que je passe du rose au bleu, puis je vais certainement obtenir plus de couleurs de films. Donc, ceci et celui-ci est définitivement quelque chose qui va du rose à l'orange ou au jaune. Et cette façon de réplétion des colorants change en fonction de votre mode de couleur. Donc, si nous changeons le mode couleur par HSB, disons. Et puis je lance ça, on va avoir une gamme de couleurs différente. La raison en est que la vitesse tourne autour de la roue chromatique. Donc, entre les deux couleurs, ce n'est pas nécessairement ce que vous considéreriez comme l'accumulation de ces deux couleurs. Donc avant avec RVB, si je prends du rouge et du bleu , je vais avoir des violets entre eux. Cependant, avec le mode HSB, nous allons passer par la roue chromatique. Le seul but de cette technique est de vous montrer que vous pouvez utiliser la méthode aléatoire pour, avec la méthode d'interpolation des couleurs, pour obtenir un tableau de couleurs à partir de cinq couleurs seulement, ce qui lui donne un peu plus d'intérêt que la normale. tableau de couleurs que vous choisissez. Je vais donc y retourner, et vous pouvez voir que l'humeur change même lorsque je le change d'un mode à un autre. Bon, maintenant, au lieu de le faire de cette façon, continuons l'exemple, qui n'est pas nécessairement important pour que vous appreniez cette leçon, mais je voulais que ce soit un exemple complet qui vous montre comment j'utilise l'interpolation des couleurs ou comment j'utiliserais potentiellement l'interpolation des couleurs dans mes conceptions. Donc, une chose que j'ai faite avec cet exemple est d'obtenir une valeur aléatoire. Je vais juste appeler ça aléatoire parce qu'ils ont déjà R comme rayon. Et puis je vais l'initialiser ici. Et comme c'est un entier, je vais passer au hasard en entier. Et je veux cinq formes différentes. Je vais donc en utiliser cinq. Je vais donc obtenir de 0 à quatre. Et maintenant, ici dans la méthode d'affichage, au lieu d'utiliser uniquement le cercle, je vais vérifier si c'est aléatoire. est égal à 0. Et je veux une autre forme. Sinon, si aléatoire est égal 1 ou aléatoire est égal à 4. Il ne s'agit donc pas de cinq formes, mais je considérerais cinq formes simplement parce que je veux que la probabilité d'obtenir un cercle soit plus élevée. Et j'ai choisi si c'est un ou quatre, f équivaut à deux, puis à trois. Donc un ami est égal à 0, je vais créer un arc. Et ça va être un x et un y. En fait, c'est au lieu de x et y parce que plus tard, je vais aussi le déplacer. Je vais pousser. Les styles ajoutent une méthode push and pop. Pour utiliser la traduction et la rotation. Translate va définir la position de chacune de ces formes si nous pouvons maintenant utiliser 00 pour chacune de ces positions. Ensuite, l'art prend d'abord les positions X et Y, puis il prend le diamètre, la largeur et la hauteur. Je vais donc utiliser le rayon comme je l'ai fait avec le cercle pour les deux parce que je veux qu'il s'agisse d'un cercle. Je ne veux pas que ce soit une ellipse. Et puis je vais passer de 0 à pi car ces derniers arguments sont l'angle de départ et l'angulaire final ou où l'angle finira. Imaginez donc un cercle ayant deux lignes perpendiculaires l'une à l'autre se croisant au centre du cercle. Imaginez donc que le côté est soit ce point, l'angle de départ. Cela commence donc toujours à partir de là. Je vais donc passer de 0 à Pi, ce qui signifie la moitié de ce cercle. Nous dessinons donc un demi-cercle. Et ensuite, ici, je vais faire de même pour le début. Et puis, pour la seconde, je vais passer de 0. Cette fois, je vais dessiner les trois quarts du cercle. Ce sera donc pi qui est la moitié, puis la moitié Pi qui est le quart du cercle. Et de cette façon, nous avons trois quarts. Enfin, je vais tracer une ligne. Et cette ligne, je veux qu'elle passe d'un peu comme dessiner la ligne horizontale sur un cercle. Je vais donc passer d'un rayon divisé par deux parce que j'agis comme si c'était le diamètre, que je devrais appeler le diamètre ici, mais c'est juste une habitude Rhino. Donc r divisé par deux et r divisé par deux. Et c'est tout ce dont nous avons besoin pour cela. Donc, si j'y vais maintenant et que j'exécute ça, nous verrons que nous avons une multitude de formes. Nous avons donc trois quarts de cercle, nous avons des demi-cercles, nous avons des cercles pleins et nous avons ces lignes pour les lignes pour tout. Je ne veux pas de remplissage. Je vais simplement utiliser un coup parce que je veux un visuel différent. Et faisons en sorte que le poids du coup soit gros, donc 15. Et ensuite, je vais aussi transformer le casquette de la course en carré. Parce que pour les lignes, ils vont avoir des bouchons ronds. Je veux les changer en carré. Ce n'est pas important, bien sûr. Et je ne ferai pas non plus de remplissage. Et comme nous avons beaucoup de styles ici, nous pouvons faire du style. Et je peux simplement supprimer tout ça d'ici ici. Et nous pouvons même colorer à l'intérieur des méthodes push and pop. Je peux donc juste faire du style ici. Et maintenant, si je fais ça, on va avoir un design plus beau. Mais une autre chose que je vais ajouter à cela qui va rendre ça amusant est une animation. Cependant, nous ne pouvons pas faire cette animation car nous ne pourrons pas la voir tant que je n' aurai pas effectué la détection de collision que nous avons faite auparavant. Je vais d'abord vous montrer l'animation. Je vais vous montrer à quel point ça ne va pas paraître bien. Pour toutes les animations. Nous allons avoir besoin d'un angle et de la vitesse. Ce sera donc un angle. Et ensuite, je vais juste appeler ça une vitesse pour la vitesse d'angle. Et ensuite, je les définirai ici. Ce sera donc un angle. Et la raison pour laquelle je le définit ici, parce que je ne veux pas qu'ils partent tous du même angle. Je veux avoir une rotation aléatoire pour chacun d'entre eux. Je vais donc faire 2 pi au hasard. Cela va donc me donner une valeur aléatoire de 0 à deux pi. Donc, le cercle complet en gros. Et puis une vitesse. va également être une valeur aléatoire qui va être de moins 0,52,5. Et maintenant, ici, dans la section rotation ou la traduction, je vais également faire pivoter ou cette section de transformation va la faire pivoter par angle, puis l'angle va se déplacer ou va mettre à jour et la mise à jour va se mettre à jour en fonction de la vitesse. Et maintenant, nous appelons la mise à jour ici. Maintenant, toutes les méthodes que nous utilisons affichent une mise à jour, puis le style que nous utilisons à l'intérieur. Maintenant, si je lance ça, tout tourne et je dois le réinitialiser. Alors, merci. Maintenant, je peux les voir tourner et non et dessiner l'un sur l'autre car dans tout ce qui tourne ne sèche pas au lieu de se réinitialiser et de tourner. Pour moi, c'est tellement cool. On dirait qu'une machine fonctionne, mais je pense que c'est plus agréable d'ajouter la détection de collision. Nous allons donc le faire en utilisant la méthode des collides. Comme nous l'avons déjà dit, il va rendre un gang booléen pour prendre un agent et je vais appeler d'autres. Ensuite, nous allons saisir la distance entre x et y et les autres points y, c'est-à-dire du centre au centre. Et puis je dirai que si la distance est inférieure au rayon plus l'autre rayon, elle devra être divisée par deux parce que nous utilisons le rayon ici comme diamètre. C'est donc à ce moment que les choses commencent à devenir désordonnées à cause du fait que je choisis la mauvaise variable, retourne vrai, puis sinon, ou quoi qu'il arrive, faites simplement faux. Cela garantit que nous retournons une valeur, que cette valeur soit mappée ou non conditionnelle. Ensuite, j'irai ici et je vais définir une valeur maximale. Là-haut. Je vais juste faire le compte MAX. Et faisons-en 50. Bien que pour l'écran, la taille 50 va être un peu beaucoup. Faisons donc, oui, réduisons-le à 20. La raison pour laquelle j'ai ajouté le nombre maximum est parce que je ne veux pas qu'il ajoute ou dépasse ce montant maximum. Je ne veux pas qu'il ajoute plus de 20 cercles, disons, ou formes. Je dirai donc que la taille des points des agents est inférieure au nombre maximum, alors je veux que vous ajoutiez un nouvel agent. Donc, s'il atteint ce montant, le nombre maximum, je ne veux plus qu'il ajoute des agents. Et ensuite, nous ferons une boucle for-loop. Pour un entier, j'est égal à 0, je suis inférieur à la taille des points des agents car nous utilisons ArrayLists, pas un tableau, donc nous n'utilisons pas la longueur. Et puis j'ai plus, plus. Nous sommes donc incrémentés d'un comme d'habitude. Et ensuite, je vais définir j comme le dernier agent. En fait, ce que je vais faire ici c'est parcourir uniquement l'agent de cette taille, sauf pour le dernier, car le dernier sera j. Donc si les agents en position j entrent en collision avec des agents ou un agent en position i puis je vais l'enlever. Et c'est là que le nombre maximum s'avère utile parce que si tous entrent en collision , nous n'aurons rien ici. Il ne s'agit donc pas seulement de nous assurer que nous ne dépasserons pas le nombre maximum, ce soit également pour nous assurer que nous atteignons ce nombre maximum. Nous n'y arrivons pas seulement parce que la plupart d'entre eux sont entrés en collision, puis nous avons dû les enlever. Et maintenant, si je fais ça, on verra qu'ils ne se heurtent pas. En fait, la raison pour laquelle ils entrent en collision est due au poids du coup. Nous pouvons donc ajouter cela ici. Je peux juste dire plus le poids du coup si je le définit ailleurs. Disons donc ceci. Je vais juste appeler W. Et là, je dirai juste que le AVC W est égal à 15. Et nous devons le définir ici également. Et maintenant, je peux l'ajouter ici. Nous pouvons simplement faire plus 15 si vous savez que vous l'êtes toujours, ce sera une valeur constante. Et bien sûr ici, ce sera une autre fléchette parce que si vous voulez qu'elles aient des poids aléatoires, c'est la façon de le faire. Plus le poids des accidents vasculaires cérébraux pour celui-ci, puis plus un autre poids d'accident vasculaire cérébral adulte pour celui-ci. Il saisit donc le poids de course correct pour chacun d'entre eux. Et maintenant, nous n'allons pas voir de collision. Donc, parce que l'écran est trop petit, nous n'allons pas voir grand-chose pendant longtemps. Faisons donc en fait un peu plus grand. En fait, le double. Et maintenant, chaque fois que vous l'exécutez, il n' y a pas de collision, il tourne et crée de beaux visuels. Et comme nous avons une rotation de départ aléatoire, vous pouvez voir que quelque chose comme celui-ci ne commence pas réellement à la même position que celle-ci ou à la même rotation est celle-ci. Et ensuite, parce qu'ils ont une vitesse aléatoire, vous verrez une vitesse différente. Et la raison pour laquelle j'ai utilisé la ligne aussi bien que parce qu'elle tourne, elle crée également un cercle, lui donne un aspect plus cohérent, mais il a encore quelques variations. Vous pouvez ensuite enregistrer l'animation si vous le souhaitez. Violence, disons qu'un nombre d'images est inférieur dix cent cent images à, si vous spécifiez la fréquence d'images ici, disons 30 images par seconde ou 24, alors vous pouvez spécifier, ou vous pouvez calculez le nombre de minutes que vous voulez et donc le nombre de cadres souhaités. Et assurez-vous de faire moins ou égal si vous indiquez le nombre exact de trames que vous voulez. Et ensuite, vous enregistrerez le cadre. Puis la sortie si vous souhaitez le placer dans un dossier appelé sortie pour l'organisation. Et puis j'aime juste les exporter en tant que PNG. Et vous pouvez faire autre chose. Quittez. De cette façon. Il va passer de 0 à 1000 images. Il va enregistrer toutes ces images avec les chiffres de cette image. Et une fois que c'est fait, cela ne sera pas vrai. Donc, cela va être vrai et ensuite il sortira. Et la sortie va simplement fermer cet écran d'aperçu qui n'a qu'à connaître cette technique de coloration. Dans la prochaine leçon, nous parlerons plus de la texture, en particulier des images d'arrière-plan. 5. Texture 02 : Images de fond: La deuxième technique de texture dont nous allons parler est extrêmement simple. Et il s'agit simplement d'ajouter une image d'arrière-plan à votre dessin. Lorsque j'insère cette œuvre sur les réseaux sociaux, l' une des questions intéressantes que je me pose est d'où vient cet arrière-plan ? Et je n'ai jamais pensé qu'une chose aussi simple que l'ajout d'une image de fond d'un vieux papier ou d'un autre papier serait plutôt importante pour l'œuvre d'art. Mais j'ai choisi cette technique comme l'une des techniques de texturation car je pense qu'il est intéressant d'utiliser le mode de fusion pour voir comment l'œuvre interagit avec l'arrière-plan. L'exemple va donc être un peu complexe. Nous allons utiliser le bruit 3D. Donc fondamentalement ce que nous avons créé et bruit le cours. Pourtant, au lieu de le mettre sur un fond normal, sur un fond solide, nous le mettrons sur une image d'arrière-plan, ce qui va l'élever un peu et le rendre plus semblable à un dessin que vous avez créé à la main. J'ai spécifiquement choisi le bruit 3D avec celui-ci parce qu'il semble que vous l'ayez peint ou que vous avez dessiné avec un stylo sur papier. Mais nous utilisons l'art génératif créé. Maintenant, parce qu'il s'agit d'ajouter des images d'arrière-plan. Nous allons commencer par ajouter l'image. J'ai choisi une image sur un site Web appelé Unsplash.com où vous pouvez obtenir de nombreuses images libres de droits d'auteur, des images de haute qualité. J'ai donc fait des recherches sur des fonds papier et j'ai eu le temps, et c'est ce que nous allons utiliser aujourd'hui avec cette œuvre d'art. Mettons-le dans le dossier. Dans le dossier d'esquisse. Ajoutons un dossier de données. Et je vais tirer ça jusqu'ici. Et je l'ai renommé en soulignement papier. Il est donc beaucoup plus facile pour nous de l'importer plus tard. Nous allons donc utiliser l'image P, et je l'appellerai simplement fond ou BG pour faire court. Et nous allons l'initialiser ici. L'arrière-plan va donc charger une image et l'image sera en soulignement papier à un point JPEG. Et maintenant, nous allons également le redimensionner en largeur et en hauteur. Cela va définitivement déformer l'image car nous avons un papier vertical et cela va l'écraser. Donc, si nous le montrons maintenant, vous verrez que certains détails sont un peu différents. Si vous revenez à l'image originale que nous avons ouverte, ce n'est pas vraiment un problème ici, car les détails ne sont pas importants, donc cela ne montre pas vraiment la distorsion. Mais si cela vous dérange autant, redimensionnez-le par rapport. Si vous connaissez le rapport d'origine de l'image. Et maintenant, si vous voulez dessiner quelque chose dessus, disons que je veux dessiner une ellipse. Mettons-le au centre de l'écran. Et je vais lui donner une largeur de 100 par 100. Et j'ajouterai aussi l'image ici juste pour la réinitialiser. Donc, au lieu de l'arrière-plan, vous n'avez plus besoin de l'arrière-plan. Nous allons simplement utiliser l'image pour réinitialiser n'importe quoi ici. Et si je fais ça maintenant, on peut le voir en plus. Maintenant, si je change ce remplissage par, disons rouge. Ensuite, j'utilise le mode de fusion. Avant d'utiliser le mode de fusion, je vais vous montrer en premier. C'est donc le modèle habituel. Et si j'utilise le mode de fusion pour multiplier, il y a plusieurs modes de fusion. conséquent, la valeur par défaut est le mélange, puis le reste que vous pouvez trouver dans la documentation. Il y a donc un écran qui se multiplie et si vous ne le savez pas, multipliez conserve les couleurs sombres et supprime tout blanc et l'écran fait le contraire. Donc, si vous avez une image en noir et blanc et que vous vous multipliez, vous ne trouverez que les parties noires de l'image qui apparaissent. Et si vous faites un écran avec la même image, vous constaterez que seules les parties blanches de l'image apparaîtront. Maintenant, cela va rendre cela un peu plus sombre en fonction de la couleur derrière elle. Et parce que nos arrière-plans sont un peu sombres, ça va en faire un rouge plus foncé. Maintenant, le problème avec celui-ci est que le mode de fusion se multiplie à chaque fois pour tout. Donc, si je fais le mode de fusion. Maintenant, vous pouvez voir que c'est un peu transparent pour que nous puissions voir la texture derrière elle. Et l'image n'a pas le même mode de fusion que le remplissage ou l'ellipse ici parce que j'ai eu recours à la fusion. Commençons maintenant par l'exemple réel. Je vais donc supprimer tout cela maintenant que nous avons compris ce que nous allons faire en ce moment, nous allons le faire avec le bruit 3D. Donc, au lieu de cette ellipse, nous allons créer des sommets qui vont traverser l'écran à l'aide du bruit 3D. Je vais donc appeler ça un agent. Et nous allons créer cette classe. Dans cet exemple, nous allons utiliser le bruit 3D. Par conséquent, nous devrons définir la position, la taille et la vitesse des points à déplacer en utilisant le bruit. Par conséquent, dans la classe, nous ajouterons ces propriétés. Je vais juste faire x, y et parce que nous utiliserons le bruit 3D, nous allons aussi utiliser z ou z. Et ensuite je ferai votre taille et votre vitesse de flotteur. La taille sera donc celle des points qui se déplacent. Et la vitesse sera leur vitesse ou leur vitesse. Pour les initialiser, je vais ajouter quelques paramètres à l'agent. Je vais donc utiliser les x et y parce que je veux les définir en dehors de la classe. Assignez maintenant x à ce que x va être et à tout ce que y va être. Et ensuite, pour z, et z sera une valeur aléatoire. Et passons de 0 à 208. Je vais généralement très petit avec la valeur C avec un bruit tridimensionnel. Et puis une taille indéfinie en vitesse. La taille va donc être une valeur aléatoire. Faisons passer de 0,5 à trois. ils sont au centre, plus ils ressembleront à des traits de stylo. Ensuite, nous allons également définir ou initialiser les vitesses comme une valeur aléatoire, sous forme de valeur aléatoire comprise entre un et cinq. Puis j'ai ajouté un tableau de couleurs. Vous pouvez utiliser le même tableau de couleurs que celui que nous utilisons depuis le début de ces cours ou depuis le début du cours. Et je ferai ce que j'ai fait avant d'utiliser un index aléatoire du tableau d'appels que je viens de définir. Ce sera donc un entier. À partir des valeurs aléatoires. Ils vont passer de 0 à la longueur du point. Et nous devrons définir la couleur ici. Composez donc la couleur ou si vous tapez la couleur. Définissons maintenant les styles. J'aime parfois garder les styles séparés de la méthode d'affichage ou séparés de la forme que je vais définir dans la méthode d'affichage. Surtout si j'ai beaucoup de choses dans le style. Mais ici, nous n'aurons que deux choses. Le premier sera donc le poids de l'accident vasculaire cérébral. Et ça va être la taille. C'est un peu comme la taille d'un stylo. Et ensuite, on va faire un AVC. Et nous ne ferons pas de remplissage ici parce que nous n' en aurons pas besoin et il n'est pas nécessaire qu'il soit à l'intérieur ici. Il n'est donc pas appelé chaque fois que nous créons un agent. Et maintenant, à l'intérieur de cette pièce, nous attirerons notre point de vue. Et nous utiliserons également le style. Et le but sera un x et un y. Très simple. Et enfin, en fait, la dernière chose que nous allons créer dans la classe, c'est la méthode de mise à jour. C'est donc ici que nous allons créer le bruit. Et le bruit va être la rotation de ces points. Ce sera donc l'angle. Et ce sera x, y et z. Cependant, si je l'utilise simplement comme ça, bruit produit des valeurs de 0 à un, et celles-ci sont très petites. Nous allons donc devoir le multiplier par la force du bruit. Et si jamais vous en avez envie cette explication est un peu difficile à suivre. Ou si vous avez l'impression que c'est un peu trop avancé pour vous, alors c'est quelque chose que j'ai abordé plus profondément dans le cours du bruit qui coule. Donc, si vous voulez en savoir plus sur le bruit et sa fonction, je vous suggérerais d'abord d'aller regarder le cours du bruit de flux, puis de revenir ici. Mais en bref, la force du bruit va se multiplier, quelle que soit la valeur, et elle se plaindra qu'elle n'existe pas. Nous allons donc créer des variables globales ici, ou des constantes globales, car je sais que la force du bruit ne va pas changer. Je vais donc créer ici. Mais avant de créer et aussi de diviser x et y par l'échelle de bruit. Et la raison pour laquelle je fais cela est que les valeurs ou la fonction de bruit produiront beaucoup de valeurs. Et l'échelle du bruit va faire évoluer une partie de cette onde et l'utiliser. C'est donc un peu comme zoomer sur une partie d'une vague. Donc, si vous regardez les montagnes de loin, vous verrez beaucoup de sommets et de vallées. Mais si vous allez plus près que vous ne verrez que l'espace dans lequel vous vous trouvez. Et NoSQL fait exactement cela. Donc, si je vais ici, nous pouvons définir l'échelle du bruit et la force du bruit. Et nous n'avons pas besoin de répéter float, nous pouvons simplement faire des virgules et ensuite nous appliquerons ou affecterons une autre valeur à la force du bruit. J'ai donc attribué une échelle de bruit, la valeur de 5049, j'ai fait 100. Ces valeurs peuvent être modifiées autant que vous le souhaitez. Plus l'échelle de bruit est grande, le bruit est lisse. Et plus une force est grande, plus vous obtiendrez de rotation parce que nous l'utilisons avec un angle par ici. Ainsi, si l'échelle de bruit se déplace ou effectue un zoom sur une partie de l'onde, la force du bruit augmente la hauteur. Et la partie basse de cette onde peut incrémenter x par cosinus de l'angle, puis la multiplier par la vitesse. La vitesse va donc agir comme le rayon, car cela produira des valeurs négatives de un à un et nous allons devoir le multiplier par une valeur plus grande. Et puis, car y va être sinusoïdal, l'angle multiplié par la vitesse. Et nous augmenterons également la valeur z de quelque chose comme 0,005. Encore une fois, cette valeur, vous pouvez modifier autant que vous le souhaitez jusqu'à ce vous trouviez les valeurs que vous aimez ou l'apparence que vous aimez. La dernière méthode que nous allons créer est maintenant l'équilibre. Maintenant rebondit, ça ne va pas faire grand-chose. En ce moment. Cela ne fera que limiter les valeurs x et y ou les points d'aller au-delà des périmètres des toiles. Ce que nous pouvons faire ici, c'est simplement limiter x de 0 à la largeur. Et pourquoi de 0 à la hauteur. Et vous verrez ce que cela fait lorsque nous créerons notre tableau d'agents. C'est donc tout ce dont nous avons besoin pour l'instant au sein de notre classe d'agents, nous y reviendrons plus tard pour ajouter quelques éléments qui feront l'exemple final. Pour l'instant, créons simplement un tableau d'agents. Je vais juste les appeler agents. Et je vais leur donner un compte. Commençons par 10. Maintenant, ici, nous allons initialiser, créer des instances de cette classe d'agent. Et une réécoute dans le constructeur, nous n'avons que x et y. Donc je vais juste faire aléatoire de 0 à largeur, aléatoire quelque 0 à hauteur pour l'instant. Et ensuite, ici, nous ferons quatre agents. Et les agents l'afficheront et la date. Et au lieu de créer le ou, au lieu d'appeler les limites dans l'onglet principal, je l'appellerai ici. Tout comme nous l'avons fait avec le style à l'intérieur de l'écran. J'ai fait la même chose dans la mise à jour. Maintenant, si je fais ça, on peut voir notre bruit 3D. Et comme vous pouvez le voir, une fois qu'il a atteint le 0 sur l'axe Y, il a cessé de bouger et il s'est déplacé juste à travers cette partie. Donc, chaque fois que c'est dans les négatifs, il sera toujours 0. Et chaque fois que c'est au-delà de la hauteur, ce sera toujours la hauteur. Et c'est pourquoi vous allez voir ces points à la frontière. Et si vous les gardez longtemps, vous verrez finalement une bordure avec les différentes couleurs que nous avons. Et maintenant, parce que la vitesse est trop élevée, nous voyons que les points ne voient pas de ligne lisse. C'est très bien. Nous allons résoudre ce problème plus tard lorsque nous aurons fini l'exemple. Donc, si nous revenons à l'onglet Principal, nous allons maintenant créer une grille. Au lieu de créer les limites entre le point zéro et la largeur et la hauteur du canevas. Nous allons les contraindre dans les cellules de notre grille. Je vais donc créer une grille et chaque point prendra sa position dans l'une des cellules. Et ensuite, il sera contraint à l'intérieur de cela. Pour ce faire, nous allons créer une méthode que je vais appeler un diplômé net. Cela va donc initialiser les positions pour nous-mêmes. Ce sera pour un entier n égal à 0. Et ensuite, n sera la zone ou moins que la zone. La raison pour laquelle je vais par zone au lieu du nombre de colonnes et du nombre de lignes est parce que je ne veux pas imbriquer les boucles. Je veux réduire le nombre de flips autant que possible. Je vais donc initialiser une variable appelée zone, et cela sera compté à la puissance de 2, essentiellement la largeur multipliée par la hauteur. Ainsi, le nombre de lignes le multiplie par le nombre de colonnes. Et ce sera là aussi. Le nombre d'agents sera donc le même nombre de cellules dans notre grille. Maintenant, je peux faire moi et je peux aussi faire J. Je vais donc être n modulo count, et ensuite ici, n va être divisé par le nombre. Donc pour les colonnes, donc de 0 à la largeur, nous allons passer de 0 au nombre de colonnes, obtenant le reste de la division N par le nombre. Ensuite, nous obtiendrons les chiffres de 0 au décompte. Et ensuite, pour les lignes, nous allons diviser n, qui est la zone par le nombre de lignes. Nous avons fait le contraire de ce que nous avons fait pour créer la zone. Et cela nous donnera toutes les positions de 0 à la hauteur. Et maintenant, pour l'initialiser, je vais créer un ensemble de positions. Je vais le créer ici. Et ça va être un vecteur p. Et la raison pour laquelle je crée un vecteur p est d'éviter créer pour flotter des tableaux un pour x et un pour y. Et ce sera aussi la zone ou la longueur d'une zone. Et puis ici, je vais faire la position à N va égaler un nouveau vecteur p à i multiplié par la largeur de cellule et j le multiplier par une hauteur de cellule. Et maintenant, nous allons les définir. Donc, si je monte ici et que je flotte la largeur de la cellule et que je vends la hauteur. Et puis ici, je vais faire une largeur de cellule égale à la largeur divisée par le flotteur des dénombrements, puis la hauteur divisée par le flotteur de compte. Et nous allons avoir besoin de float car nous avons besoin d'un calcul plus précis. Parce que s'ils ne le font pas et qu'il s'agit d'un entier, si la largeur n'est pas divisible par le nombre, nous verrons des écarts dans notre grille. Maintenant que nous avons cela, nous ne devrions pas avoir d'erreur ici. Et je peux initialiser la subvention ici. Ajoutons également des marges. Si je le fais maintenant, le plus grand sera sur les bords de la toile et ça n'a pas l'air génial. Je vais donc ajouter les marges ici. Maintenant, il suffit de faire 50. Donc maintenant, la largeur de la cellule et la hauteur de vente ne seront pas seulement divisées par le nombre. Il va y avoir une largeur moins les deux marges. marge est donc multipliée par deux. De cette façon, nous soustrayons les marges de la largeur et de la hauteur. Nous créons donc une nouvelle largeur et une nouvelle hauteur. Au lieu de choisir une largeur et une hauteur aléatoires, je veux que chacun des agents commence à partir de chaque cellule. Pour cela, nous allons simplement utiliser ce que nous avons initialisé ici. Nous avons donc déjà créé les points. Nous pouvons simplement l'utiliser ici. Ce sera la position I point x, puis la position I dot y. Si je lance ceci, nous verrons des points à partir de chaque cellule. Cependant, nous ne le voyons pas très bien. Et nous allons aussi devoir pousser parce que si vous remarquez, tout a commencé à partir d'ici, puis s'arrête ici. C'est parce que nous avons supprimé les marges. Nous allons devoir les pousser ici. Donc, si je fais plus de marge, et ensuite ici aussi, plus la marge. Maintenant, nous allons mieux le voir et nous devrons également changer cela en marge, en marge, puis en largeur moins marge, non ? Marge. Nous faisons donc à partir de la marge puis de deux marges moins parce que maintenant les limites sont en fait jusqu'aux bords. Donc, si je réexécute ça, on peut le voir clairement. Nous pouvons voir la marge parce qu'elle s'arrête ici. Et maintenant, vous pouvez voir comment les limites fonctionnent parfaitement. Maintenant, la partie amusante consiste à modifier les contraintes ici pour limiter les points à l'intérieur de chaque cellule. Pour le faire également, encore une fois, ajouter quelques paramètres supplémentaires. Le premier sera la largeur des cellules et la hauteur de vente naturellement, car c'est notre grille. Et nous l'ajouterons également ici pour pouvoir le transmettre depuis l'onglet principal, depuis la grille ou depuis cette partie ici. Donc, peu importe ce que nous avons initialisé pour la grille, et cela sera inférieur largeur de la cellule scolaire et à la hauteur de la cellule de soulignement. Et nous pouvons les initialiser ici. Nous n'allons donc pas souligner la largeur de cellule. Et la même chose pour la hauteur des cellules. Parce que cela nous donne juste la silhouette et la hauteur de vente, mais aussi besoin des positions. Donc, où que nous utilisions ici, cela va nous donner les coins des cellules et ensuite les deux autres nous donneront la largeur et la hauteur. Nous devons donc ajouter cela. Nous pouvons maintenant les ajouter ici. Je vais donc lui donner la largeur de la cellule et je lui donnerai la hauteur de la cellule. Maintenant, si nous descendons ici, je peux utiliser la largeur des cellules ici. Et vendez de la hauteur ici parce que x et y se déplacent et que nous les utilisons pour les positions des points au fur et à mesure qu'ils se déplacent, nous allons devoir utiliser autre chose que x et y parce que ceux-ci ne fonctionneront pas car ils sont constamment en mouvement. nous suffira donc de saisir la valeur x, la valeur x de départ, que nous passons ici et la valeur Y de départ. Et nous les stockerons à l'intérieur de la cellule x et vendrons y , et ceux que nous pouvons créer ici. Il s'agira donc de la cellule X et de la vendre y. Maintenant , nous saisissons les valeurs initiales. Maintenant, nous les avons ici. Nous pouvons maintenant le déplacer confortablement sans nous soucier de la première position. Ensuite, nous avons ajouté la largeur de cellule Q, quelles que soient x et y. Et maintenant, ici, nous allons utiliser la cellule X et vendre des vins. Et maintenant, si je lance ça, nous allons voir qu'ils sont limités à l'intérieur de chaque cellule. Cela a déjà l'air génial, mais nous pouvons aussi, donc ils ont déjà fière allure, mais nous pouvons aussi changer quelques choses. Donc, au lieu d'un point, nous allons utiliser un sommet afin de les rendre plus connectés. Et au lieu de simplement brouiller des points comme ils le sont actuellement, vous pouvez voir les points parce qu'ils ne se connectent pas réellement les uns aux autres. Mais si nous utilisons la forme Begin et, et la forme avec des sommets, nous pouvons les connecter pour qu'ils ressemblent davantage à une ligne. En fait, avant de faire quoi que ce soit, nous allons le réinitialiser à l'aide de l'image. Ajoutons l'image d'arrière-plan. Maintenant, vous pouvez les voir bouger. Nous pouvons également ajouter des guides pour que vous puissiez voir où commencent et finissent les cellules. Et c'est simplement créer une grille normale. Je vais les appeler guides. Ensuite, je leur donnerai un nombre de x et y pour le nombre de colonnes et de lignes. Ensuite, je vais créer des variables locales pour la zone. Ensuite, je créerai également la largeur et la hauteur des cellules locales. Mais ils vont être les mêmes. Je vais donc prendre ça ici. Mais au lieu de compter, il va y avoir xcount. Et pour la hauteur des cellules, ce sera le même, mais y compte, et cela va être de la hauteur. Et puis je vais utiliser la même boucle que celle que nous avons utilisée ici. Mais au lieu de créer un nouveau vecteur p, je vais simplement utiliser une fonction rectangle et elle aura la même position x et y, mais je sais aussi avoir une largeur et une hauteur de cellule. Maintenant, nous allons devoir l'appeler ici. Et cela nécessitera un décompte. Et parce que j'utilise le nombre de lignes et de colonnes ici , je vais l'utiliser ici. Je vais ajouter un coup à ça. Et j'utilise de la pop persane juste pour ne pas affecter mes agents. Et on peut juste le rendre noir. Et je vais lui donner une capacité de 50 %. Et maintenant, nous pouvons le voir. J'ajouterai également un mode de fusion ici pour que vous puissiez mieux voir les couleurs sur le papier. On dirait donc plutôt un stylo écrit sur le papier. Comme je l'ai dit, nous allons devoir utiliser le push et le pop. Pour pousser les styles, c'est restreindre les styles uniquement pour les points. Ou vous pouvez réattribuer le mode de fusion ici pour ceux de cette pop persane. Et je vois qu'il y a un peu plus sombre, mais nous ne voyons rien parce que nous réinitialisons l'image ici. Donc, il ne fait que bouger au lieu d'essayer. Maintenant, pour le dessiner, la chose que je dois changer, c'est ce point. Donc, au lieu de le faire, je vais créer une boucle. Et je vais faire un compte. Et puis je commencerai aussi la forme et la forme. Parce que je vais créer une ligne à l'aide de sommets. Mais au lieu de placer le sommet ici, je dois le mettre ici à l'intérieur de la méthode de mise à jour. Parce que j'ai besoin que chaque sommet ait une position x et ydifférente. Si je le mets partout ici, il aura la même position x et y, puis les choses vont bouger, donc ça ne mettra pas à jour le sommet. Et puis j'appellerai la méthode de mise à jour ici. Donc, au lieu de l'appeler ici, nous pouvons simplement utiliser display et nous appellerons style et mise à jour. Et à l'intérieur de la mise à jour, la méthode bounds va être appelée et count sera un paramètre ici. Maintenant, ici à l'intérieur de l'écran, je peux faire quelque chose comme 100 points. Maintenant, si je fais ça, on peut voir qu'il crée une ligne, mais c'est trop rapide parce que nous avançons à cette vitesse à l'intérieur de très petits espaces. Maintenant, la première chose que j'aime faire, généralement quand quelque chose comme ça se produit, est de modifier la fréquence d'images et de modifier la taille de la toile. Donc, si je fais quelque chose comme 1080 par 1080, vous pouvez voir que la forme est plus espacée ou que la largeur de la cellule est un peu plus grande. Maintenant, il y a plus d'espace pour bouger, puis je peux réduire la fréquence d'images. Donc, si je vais ici et que je peux faire la fréquence d'images, parce que la fréquence d'images par défaut est, je crois 60 et je vais la réduire à 12 ou même peut-être 24. Mais même 24 heures trop vite. Vous pouvez donc soit réduire la vitesse ici. Donc, si je fais de 0,1 à 0,5, vous verrez que le mouvement a ralenti, mais vous devrez changer beaucoup de paramètres car la modification de cette vitesse affectera également le bruit 3D. Alors ramenez-le à un à cinq, puis je réduirai ça à 12. Et je l'aime mieux quand ça ressemble davantage à une animation stop motion. Et puis je peux aussi augmenter cela car maintenant nous avons une toile plus grande, donc 100 ne suffiront pas à remplir les cellules. Je vais donc en faire 500. Et maintenant, nous allons voir que c'est beaucoup mieux. Et pour le rendre encore plus beau car maintenant vos yeux vont partout sur l'écran. Ainsi, pour limiter le mouvement de votre œil sur la toile, nous pouvons simplement remplir certaines de ces cellules. Pour ce faire, je retournerai à la classe d'agents et je vais créer une variable aléatoire. Je vais appeler Rand. Et il s'agit d'une valeur aléatoire comprise entre 0 et un. Et puis à l'intérieur du style, ce n'est peut-être pas la façon la plus sage de le faire parce que je vais simplement supprimer le trait, parce que je vais simplement déplacer la couleur du trait, mais en fait je ne supprime pas l'instance de L'agent. Vous pouvez donc le faire ici pour ne pas initialiser tous les agents, mais je vais simplement faire une solution simple ici en supprimant simplement la couleur du trait. Donc si je vais ici et que je le ferai si mon ami est, disons moins de 0,7 ou 70 %, alors j'aurai une couleur. Sinon, j'ai besoin de l'AVC ou je n'ai besoin d'aucun accident vasculaire cérébral. Et si je clique sur Command T ou Control T sur un PC, vous le formaterez automatiquement. Maintenant, si je fais ça, nous pouvons voir qu'ils ne sont pas tous remplis. Et de cette façon, c'est moins bruyant. Ce que nous allons apprendre dans la troisième technique de texturation est également l'ajout d'éléments d'arrière-plan. J'ai donc déjà fait quelque chose ici qui va être lié à cette leçon. Et c'est créer ces guides et les laisser. Vous pouvez donc supprimer ces guides si vous le souhaitez, en éliminant simplement cela. Mais ça n'a pas l'air aussi beau quand on le voit cette façon, car on ne sait pas pourquoi il se comporte de cette façon. Cependant, si vous quittez vos guides, cela semble plus beau parce que maintenant vous comprenez pourquoi ils se déplacent de cette façon ou pourquoi ils sont confinés dans cet espace, car il y a des limites pour qu'ils restent ainsi. Maintenant, nous pouvons également ajouter autre chose, et c'est l'une des raisons pour lesquelles j'ai créé les guides avec un compte x et y, je peux créer une autre grille, mais cette fois elle peut avoir quatre fois plus de compte. Et je peux également lui donner une couleur différente de celle du tableau. Disons que je vais lui donner la deuxième couleur. Et j'y arriverai aussi à 50 ans. Si je fais ça, ça ne va pas paraître juste parce que nous ne le faisons pas de cette façon. Nous devons faire le compte de x et y, ou en fait, ils seront tous les deux au compte x. Je vais également changer la couleur de celle-ci pour qu'elle soit la première couleur du tableau. Ou en fait, je voulais que ce soit le contraire. Le rose va donc être à l'intérieur et celui-ci sera à l'extérieur. Et je vais le mettre avant parce que j'ai besoin les cellules les plus grosses soient les plus importantes, car elles confinent l'écran. Et puis je peux aussi faire le mode de fusion pour celui-là. Maintenant, on voit mieux le rose et on voit mieux le bleu. Maintenant, nous pouvons jouer avec l'échelle du bruit. Ainsi, en l'augmentant à 1000, peut-être que plus vous augmentez l'échelle du bruit, plus le design sera lisse. Donc, si je vais jusqu'en 2000, vous verrez que les lignes sont beaucoup plus lisses. Si nous revenons à 500, vous verrez qu'il y a plus de rotations. Et si on descend à 60 ici, il y a moins de rotations. Je vais donc revenir à 100 et vous pourrez jouer avec ça comme vous le souhaitez. Vous pouvez également jouer avec la vitesse ou les incréments de la vitesse du troisième argument dans le bruit. Quelque chose de ce genre va donc créer plus de rotations. Et plus c'est lent, cela va créer beaucoup moins de rotation. Vous pouvez également jouer avec la longueur par ici ou le nombre jusqu'aux sommets. Donc, si nous passons à 16 ans, ce sera moins important. Et ensuite, si nous revenons à 500, nous aurons plus de sommets et vous pourrez voir le bruit un peu plus. C'est en fait l'un de mes exemples préférés du groupe car il a l'air plus naturel avec le fond papier. Vous pouvez également jouer avec les différents arrière-plans que vous pouvez trouver sur le site Web ou sur n'importe quel site Web. Vous pouvez également photographier votre propre papier et l'ajouter. Cela lui donnera plus de caractère, surtout si vous créez quelque chose comme du papier journal avec beaucoup de peinture et beaucoup d'autocollants et de ruban adhésif. Tous ces détails peuvent créer un aspect naturel de votre travail graphique. C'est tout ce que j'ai pour cette technique de texture. Ensuite, nous allons parler de la prochaine technique de couleur, qui consiste à utiliser les images d'arrière-plan comme moyen de colorier vos graphiques. 6. Couleur 02 : Couleur à partir d'images: Dans cette leçon, nous allons discuter de la deuxième technique de coloration que je veux vous montrer et qui utilise les images comme couleur. Cette technique est utile si, disons, vous avez une image que vous avez créée sur votre iPad, exemple sur Procreate. Et il a utilisé des choses comme des dégradés et des pinceaux qui sont un peu plus doux. Facilitez l'outil de liquéfaction pour fusionner les couleurs. Ce serait une excellente image à utiliser et à traiter comme entrée de couleur pour vos conceptions géométriques, qui sont un peu plus dures, mais avec des couleurs comme celle-ci, elle peut élever le design, la fin pour moi, je vais utiliser l'un de mes modèles géométriques antérieurs du cours de récursions. Et je vais l'utiliser ici pour un autre design géométrique. Il va donc lui donner un aspect différent. La première chose que nous allons devoir faire est d'importer l'image dans le traitement. Et je vais aller dans le dossier. Vous allez devoir enregistrer votre fichier d'esquisse pour accéder au dossier de clôture. Ensuite, nous allons créer un nouveau dossier et un fichier d'esquisse supplémentaire, et je vais l'appeler des données parce que c'est ainsi que vous importez images ici ou n'importe quel fichier plutôt que dans votre fichier de traitement ou votre fichier d'esquisse de traitement. Et puis je vais l'attraper. Je l'ai mis ici dans mes téléchargements. Et aussi simple que cela, je l'ai appelé image de soulignement 001 juste pour un accès facile. Et maintenant, si je retourne ici, nous pouvons créer cette image chargée. Je vais donc créer une nouvelle variable appelée image en utilisant la classe PMF. Et puis, ici, je vais dire que l'image va charger l'image. Chargez donc l'image, et cela prend le nom du fichier. C'est pourquoi il est beaucoup plus facile si vous avez un nom de fichier simple. Et je vais aussi le redimensionner car si je dessine ça maintenant, alors si je le fais, imaginez que vous pouvez le sécher en utilisant la méthode de l'image. Et ensuite, vous devrez juste positionner C'est dans le coin. Si je le dessine maintenant, ça va être énorme. Donc, si je veux le redimensionner et que je vais devoir utiliser la méthode de redimensionnement à l'intérieur de la classe PImage. Et je vais juste faire de la largeur et de la hauteur. En ce moment. Je sais avec certitude que mon image ou l'image dans laquelle je suis en train de charger est un carré. Peu importe que je le redimensionne simplement à la largeur et à la hauteur de mon écran, car cela ne le déforme pas. Et c'est l'image réelle. Mais si vous avez une image plus longue, verticalement ou horizontalement, vous devrez redimensionner sa largeur ou sa hauteur en fonction de la partie souhaitée. Et le reste sera découpé par votre écran. Cependant, cela ne me dérange pas si je l'utilise pour la couleur. ne vous dérange pas de déformer l'image, détruire essentiellement en la redimensionnant à la largeur et à la hauteur de mon écran, car je ne l'utilise que dans des formes géométriques. Mon objectif final n'est donc pas de montrer cette image, la signification de l'image sous-jacente, mais pour celle-ci, cela va être très simple. Nous allons donc simplement le redimensionner à la largeur et à la hauteur. Et maintenant, nous avons l'image parfaitement adaptée à l'écran. Ensuite, la prochaine chose est de saisir les couleurs de chacun des pixels. Maintenant, la façon dont vous pouvez obtenir n'importe quelle couleur de ce design consiste à utiliser la méthode get. Donc, si je dis imprimer ce qu'il y a dans les annonces image MouseX et MouSey. Et vous devez mettre MouseX et MouSey dans la fonction de dessin parce qu'il fallait imprimer chaque fois que je bouge la souris, parce que MouseX et MouSey, pourquoi ? Nous allons saisir les détails de l'endroit où se trouve la souris. Donc, si vous le placez à côté de la fonction de configuration, il ne fonctionnera qu'une seule fois et ce sera le point zéro. Donc, si je fais ça maintenant, on peut voir les couleurs changer. Et moi, si je dessine réellement, au lieu de le faire de cette façon, je l'utiliserai simplement comme remplissage, puis je dessinerai un rectangle chez MouseX Housewife. Ce sera, disons, 30 pixels sur 30. Et chaque fois qu'il sera rempli par celui-ci, nous verrons les couleurs changer à chaque fois. Vous pouvez donc voir que la couleur du rectangle change en fonction de l'endroit où se trouve ma souris sur quel pixel. Donc, si c'est sur les pixels orange , il sera orange , rose, rose, etc. Maintenant, passez à la section suivante de cette leçon, qui est l'exemple. Je vais donc vous montrer un exemple où vous pouvez utiliser quelque chose comme celui-ci. Je vais donc créer quelque chose de très géométrique, ce qui signifie généralement que j'utilise une grille. Je vais donc créer une méthode que je vais appeler grille. Et cela nécessitera un compte car pour cette grille, comme c'est un carré, j'aurai besoin d'un compte de x et d'un nombre de blancs. Et ce sera le nombre de mes colonnes et de mes lignes. La première chose que je créerais pour une grille, c'est la hauteur du crayon silhouette, connaissant le nombre et la largeur de mon écran. Le premier en vaudra tellement la peine. Et je serai divisé en largeur par le flotteur du comte. Juste pour obtenir un calcul plus précis. Parce que si je ne fais pas cela, si vous divisez la largeur par un nombre indivisible par la largeur, vous verrez beaucoup d'espaces. Mais en convertissant cela en flotteur, vous obtenez le calcul correct ou le plus précis. Et puis cela sera divisé en hauteur par le flotteur du comte. En passant, vous pouvez également créer des guides. Nous pouvons créer une autre méthode que vous pouvez appeler des guides. Si cela vous aide. De cette façon, vous pouvez voir comment fonctionne la grille. Il en va de même pour celui-ci. Créons donc les deux en même temps. Vous pouvez donc voir comment les choses fonctionnent. Et vous pouvez créer une fonction qui les calcule ensemble. Ensuite, vous pouvez les appeler à l'intérieur de ces deux-là au lieu de tout redéfinir. Mais je préfère cela de cette façon juste au cas où je voulais changer les gars par autre chose. Et puis j est moins que le compte. Donc j va passer par la hauteur de l'écran, et je vais passer par la largeur. Il va donc créer les colonnes pour nous. Et c'est à vous de choisir si vous voulez le faire. Je dis d'abord que vous voulez d'abord passer par la largeur de l'écran, les hommes, la hauteur. Ce n'est pas vraiment important ici. Ensuite, je vais créer les positions x et y. Celui-ci va donc être multiplié par la largeur de la cellule, et y sera multiplié par j par la hauteur de la cellule. Et ensuite, ce sera le guide. C'est donc à nous de voir que tout fonctionne bien ou que tout est là où il doit être positionné. Et parfois, c'est agréable de quitter ces guides. Cela peut donner un beau visuel et nous en parlerons plus tard. Et maintenant, si je dessine le guide, au lieu d'essayer l'image, je vais dessiner les guides. Et disons que je veux 10 lignes par dix colonnes. Ensuite, je reçois 10 lignes par 10 colonnes. Je sais donc que ma grille fonctionne parfaitement. Maintenant, je peux le copier et le coller ici. Au lieu de dessiner des rectangles, je vais dessiner des lignes et des arcs. C'est donc un peu comme si j'essaie de tracer un chemin d'un côté de l'écran et de parcourir les lignes et les colonnes jusqu'à ce qu'il arrive à la fin de la grille. Et que je peux créer en spécifiant quelques scénarios. Je veux donc passer du coin supérieur gauche, puis je veux aller à droite, puis je vais descendre une ligne puis vers la gauche, puis une ligne vers la droite et ainsi de suite jusqu' à la dernière cellule de ma grille. Donc, pour ce scénario, je sais que je ne tourne qu'à la première colonne et à la dernière colonne. Sachant que je peux écrire un si conditionnel qui vérifie si c'est la première colonne. Et puis un autre qui vérifie si c'est le dernier. Et cela sera compté moins un parce que nous allons faire un moins que le décompte, ou plutôt ici. Et enfin, ma déclaration d'autre va être tout le reste. Ce n'est donc pas la première colonne, ce n'est pas la dernière colonne, ce sera tout le reste. Donc, pour tout le reste, je vais tracer une ligne la plus facile. Nous allons donc commencer par ça. Il va de X et Y, donc de la partie gauche de la cellule. Et puis pour y, parce que je veux qu'il soit au centre de chacune de ces cellules. Ensuite, je vais ajouter à cela la hauteur de cellule divisée par deux. Et puis je veux qu'il aille du côté droit de chaque cellule, sorte que ce sera x plus la largeur de la cellule E. Et puis pour le dernier sera le même parce que je ne veux pas qu'il s'agisse d'une ligne diagonale, je veux qu'elle soit horizontale. Ce sera donc la même chose. Donc, la hauteur des cellules est divisée par 2, donc y va rester la même. X va passer de gauche à droite. Et si je fais ça, je devrais voir des lignes si j'appelle Greg. Appelons Gerd. Et je vais faire le même compte. Nous pouvons simplement nous assurer que chaque fois que les guides sont identiques à la grille, je vais définir le compte ici. Nous allons faire dix minutes d'argumentation stupide ici avec le nombre de variables. Et maintenant, nous pouvons voir que la première colonne n'a rien, car notre conditionnel F est vide. Et puis l'elsif conditionnel est vide pour le dernier, mais ensuite ceux du milieu, qui sont tout le reste, qui sont tout le reste, ont une ligne qui va horizontalement de gauche à droite et centrée verticalement à l'intérieur de chaque. cellule. Maintenant, pour le premier, le dernier, je sais que je veux dessiner des arcs pour tourner. Ce sera donc un quart de cercle pour passer d'une ligne à une autre pour chaque cellule. Il s'agira donc d'un demi-cercle pour les deux cellules, mais il va falloir dessiner un quart du cercle, puis un quart du cercle pour l'autre cellule. Il y a donc deux scénarios pour la première colonne, puis il y a deux scénarios pour la dernière colonne, c'est-à-dire des lignes impaires et paires. Le premier qu'on va faire, c'est même ramer. Et c'est-à-dire si j modulo 2 est égal à 0, ce qui signifie que si le reste de la division j par deux va être égal à 0, ce qui signifie que J est divisible par deux, alors ce sera une ligne égale ou un nombre pair, ce qui signifie qu'il s'agit d'un même rangée. Sinon, si j n'est pas pair, donc le reste de la division par deux ne sera pas égal à 0, alors il nous donnera les rangées impaires. Donc, si je copierai et collez celui-ci, ce sera la même chose pour les deux. La seule différence est que nous allons dessiner les arcs. Nous avons donc parlé de notre x dans la leçon précédente ou dans la précédente leçon de couleur. Et nous savons que pour l'arc dans les deux premiers arguments seront la position X et Y de son centre. Donc, s'il s'agit d'un cercle complet, alors le centre sera nos x et y. Donc je veux le centre pour celui-ci, pour chacun des deux. Donc 0 sera considéré comme une rangée égale car les paires ne seront pas le deuxième demain que nous verrons visuellement, mais ce sera la troisième car nous allons 01234. C'est donc même, c'est même. Et puis c'est étrange. Je sais donc que je veux que ça disparaisse parce que je sais que je commence par ici, donc je sais que je veux que ça se passe par là. Et ensuite, en passant par ici, on va aller par là, puis on se retourne. Et ensuite, en passant par ici, nous allons aller par là. Je sais donc qu'il s'agira d'un demi-cercle pour le premier. En fait, vous pouvez tracer une ligne, mais il y aura encore plus de conditions que vous pourrez ajouter à votre boucle for ou que vous devrez ajouter à votre boucle for. Je vais donc simplement laisser ça comme une courbe ou un arc qui va monter vers le haut. Il s'agira donc de x plus la largeur de la cellule, car c'est le coin supérieur droit. Et puis, ce sera Y parce que nous ne bougerons nulle part verticalement. Ensuite, il va falloir définir un rayon. Je vais donc faire un cercle. Donc, pour la largeur et la hauteur, ce sera R. Et je vais définir r ici. Par conséquent, r sera la valeur minimale de la largeur et de la hauteur des cellules. Juste au cas où je voudrais en faire une grille rectangulaire. Cela permettra d'avoir toujours cercles pour les arcs et de ne pas les étirer sur tout l'écran. Parce qu'ensuite, nous allons voir ces différentes et ce seront des ellipses. Et ça ne sera pas beau à moins que ce soit le look que vous recherchez. Je vais donc simplement saisir la valeur minimale, que ce soit la largeur de la cellule ou la vente élevée, selon votre écran, que vous vouliez qu'elle soit verticale ou horizontale, mais moins carrée. Ce n'est donc pas vraiment important pour le moment. Vous pouvez donc simplement spécifier la largeur de la cellule et cela ira bien. Et maintenant, sachant que l'arc démarre ou qu'un cercle commence à tomber du côté droit. Donc, en pensant aux deux lignes perpendiculaires l'une à l'autre au centre, nous savons que le haut est au nord, puis vers le sud. Le taux sera donc de l'Est et la gauche sera Ouest. Nous allons donc commencer par l'est. Mais je sais que ça ne va pas de 0. Cela va donc commencer à partir du point Sud. Et le point sud sera à moitié Pi parce que nous passons de 0 par quart du cercle et c'est la moitié du Pi. Et puis je vais du côté ouest du cercle, donc ce sera un tuyau. Maintenant, exécutons ceci pour nous assurer que tout fonctionne parfaitement. Comme vous pouvez le constater, les arcs sèchent bien. Et changeons la couleur de celle-ci pour que nous puissions la voir et masquer les guides dès maintenant, ou nous pouvons les colorer différemment. Disons donc que maintenant le film puis trait fera 0 à 50 transparence. Et ensuite, ici, je vais faire du poids. Nous allons faire en sorte que le poids du trait soit variable. Je vais donc faire la largeur divisée par le nombre multiplié par deux. C'est juste un chiffre arbitraire. C'est ce que j'ai calculé et c'est ce que j'aime le mieux. Et ensuite, nous ferons aussi un casquette de course. Et je vais faire cette place. Et nous allons juste les rendre noirs pour l'instant. Et au lieu de définir l'absence de remplissage ici, et dans les deux fonctions, je vais le faire ici. Maintenant, si je fais ça, nous devrions voir un look plus beau. Maintenant, pour les étranges ici, nous voulons qu'il comble cet écart. Il s'agira donc d'une cellule x plus avec une hauteur de cellule 10 et y plus. C'est le centre. Et ensuite, pour le rayon, ce sera le même à chaque fois. Et maintenant, nous allons perdre de savoir que ce ou le cercle tourne dans le sens des aiguilles d'une montre, il va falloir passer de 0 à demi Pi, mais nous n'en avons pas besoin. Et puis on va aller à Pi. Mais nous n'en avons pas besoin. Nous allons donc passer de pi à pi et demi Pi. Donc, la moitié du cercle plus un quart de plus. Et nous vous recommandons d'expérimenter avec des arcs si vous avez l'impression que cela n'a aucun sens. Mais il suffit de noter que la moitié pi est un quart de cercle, pi est la moitié d'un cercle. Et que lorsque vous dessinez un QR, allez dans le sens des aiguilles d'une montre. Et si je dirige ça maintenant, et que j'ai fait ces deux événements, ça ne marchera pas. Donc maintenant, nos Rosen sont des rangées bizarres et elles fonctionnent. Super. Nous allons maintenant faire la dernière colonne. Donc, pour la dernière colonne, nous allons par là. va donc falloir que tu prennes cette voie. Donc, ce point est x, puis y va sur toute la hauteur. Il va donc s'agir d'une hauteur de cellule y plus, alors le rayon restera le même. Et maintenant, depuis les centres ici, on passe de la moitié pi plus pi à deux pi. Et la raison pour laquelle je dis deux tartes parce que nous allons faire un cercle complet au lieu de dire 0, ce qui va revenir en arrière. Et si je fais ça, tu devrais avoir l'avant-dernier. Et maintenant, le dernier. Nous allons avoir le centre à X et Y. Et puis ce sera le rayon. Et enfin, ça va partir, puisque c'est le centre, ça va passer de 0 à la moitié Pi, donc seulement un quart de cercle. Et maintenant en exécutant cela, nous avons un design complet. maintenant à la partie la plus importante, et c'est la colorier à l'aide de l'image que nous avons ajoutée ou rechargée. Et comme nous le savons maintenant, nous pouvons le faire en utilisant la méthode GetMethod. Donc, ce que je ferais, c'est simplement saisir l'image en utilisant la méthode get. Je vais utiliser les positions x et y. Mais parce que je veux le centre de cette grille ou le centre des cellules et des migrants. Et je vais devoir ajouter la moitié de la largeur de la cellule au x, puis la moitié de la hauteur de la cellule au y, juste pour m'assurer que j'obtiens n'importe quelle couleur au centre de moi-même. Et maintenant get va se plaindre qu'il faut des entiers et ce sont des floats. Je vais donc devoir l'encapsuler dans une méthode int. Juste parce que le casting ne fonctionnera pas ici puisque nous avons une formule. Et au lieu de cela, il va falloir lancer x seul et ensuite la cellule serait seule, sinon vous devrez les encapsuler entre parenthèses, et cela va être entre parenthèses. C'est trop pour que nous puissions simplement utiliser les méthodes et les convertir. C'est beaucoup plus court. Maintenant, si je cours ça, nous devrions obtenir les couleurs de l'image. Maintenant, si je montre l'image, vous pouvez voir légèrement que partout où se trouvent les lignes et les arcs, saisissez la couleur au centre de cette cellule. Et pour nous assurer que nous saisissons réellement les couleurs de l'image, il existe un moyen de le certifier en créant une animation. Et je pense qu'il est agréable de voir comment les couleurs sont saisies dynamiquement dans les images. Donc, la façon dont vous pouvez le faire consiste à laisser le compte comme celui-ci, car il est désormais initialisé par défaut à 0. Donc, si je vais juste ici et que je compte plus, plus que pour l'augmenter d'un. Et puis je saisis que ce ne sont plus les guides parce qu'ils ont l'image. Et maintenant, chaque fois que cela est incrémenté, il va l'attraper ici et le plus grand sera mis à jour en fonction du nombre. Ensuite, nous allons également devoir réinitialiser l'arrière-plan. Je vais aussi en faire une couleur plus foncée car elle est plus agréable avec les couleurs que j'ai. Et je vais réduire la fréquence d'images, car cela va être aveuglant. Alors, fais-le à 24 heures. Vous pouvez même le faire moins. 12 serait bien, mais cela ressemblera davantage à un stop motion, n'importe quel mouvement, et s'assurer que tout est bien dessiné. Maintenant, nous pouvons exécuter cela et vous pouvez voir l'image se révéler, plus nous avons de cellules. Parce que cela va ressembler à augmenter la résolution de l'écran. Donc, avoir plus de pixels, c'est-à-dire avoir une image plus nette. Et c'est essentiellement ce que c'est. Mais maintenant, nous avons un très beau design. Vous pouvez donc également enregistrer cette animation pour montrer aux utilisateurs l'image sous-jacente de la provenance de vos couleurs. Vous pouvez également partager des captures d'écran de vos favoris. Mes favoris sont donc généralement ceux qui en ont deux. Donc, si je fais quelque chose comme ça, je peux l'utiliser dans n'importe quel travail de graphisme. Ou même un peut être quelque chose que vous pouvez utiliser. En fait, j'utilise cela dans le code avec ma vidéo sur YouTube où j'ai ajouté des titres à la fin de la vidéo sur un cadre comme celui-ci, mais qui est horizontal pour qu'il corresponde à la vidéo. Mais en général, j'aime mieux l'animation car elle affiche l'image ou l'image sous-jacente à la fin. Et si vous voulez enregistrer cela, vous pouvez dire si le nombre ou si vous pouvez utiliser le nombre d'images est inférieur ou égal, disons 120 en fonction des fréquences d'images et du nombre d'images. Et je vais simplement utiliser un cadre et je le mettrai dans un dossier de sortie. Et sachant que nous allons nous arrêter à trois chiffres, nous avons besoin de plus de trois hachages, puis PNG ou JPEG selon le format que vous aimez. Et pour le reste, nous allons sortir. Cela va donc enregistrer les images, puis il quittera ou fermera l'écran précédent. Il s'agit donc de saisir les couleurs des images. Dans la prochaine leçon, nous allons parler une autre technique de texture, qui consiste à ajouter vos guides en tant qu' éléments de conception ou simplement à ajouter des éléments d' arrière-plan pour rehausser votre conception ou pour y ajouter un intérêt visuel. 7. Texture 03 : Éléments arrière-plan: Dans cette leçon, nous allons travailler sur un exemple car nous l'avons déjà créé et implémenté. Cette technique est quelque peu similaire à la seconde. Le deuxième portait sur l'ajout d'une image d'arrière-plan. Bien qu'il s'agisse d'ajouter des éléments d'arrière-plan tels que des guides ou des textures et des détails tels que de fausses poussières et des rayures. Dans la deuxième technique de texturation, je combine deux grilles sur le dessus, l'image d'arrière-plan pour imiter du papier millimétré, autant plus que nous utilisons une image papier réelle en arrière-plan. Il semblait également être le choix naturel d'ajouter un dégradé en premier lieu pour montrer pourquoi le design se comporte comme il est. Pour montrer que les limites de vente peuvent trouver chaque agent respectivement. Toutefois, pour cet autre exemple, il n'est pas nécessaire de révéler les guides. L'ajouter peut envahir le design ou même le ruiner car nous capturons les couleurs d'une image, plus il y a de cellules, plus les guides peuvent être gênants. Imaginez l'arrière-plan de votre bureau dans tous les pixels, bords en blanc ou en noir, l'image ne sera pas belle dans notre cas. Cependant, concepteurs ont un impact sur les pixels afin que nous puissions ajouter des guides subtils tels que des points sur les cellules, les arêtes ressemblant à du papier pointillé, peu comme ces journaux à balles que nous voyons là-bas. Il expose la grille sous-jacente sans surcharger l'illustration finale. Cet exemple qui va créer ensuite nous donne un sentiment de chaos. Bien que lorsque je montre les guides, j'expose qu'il s'agit d'un chaos ordonné. Il s'agit d'un grade immunitaire avec des formes décalées aléatoirement. Pour cet exemple, révéler les détails de l'arrière-plan est votre choix en fonction de la réaction que vous souhaitez de les montrer à d'autres personnes. Par exemple, dans cet exemple, l'utilisation de chiffres dévoilant la grille sous-jacente donne au spectateur un aperçu de la conception qui ajoutera un type d'élément graphique. Cela montre que j'ai créé cela à l'aide d'une grille tout en proposant l'approche consistant à faire de la note que je n'ai pas utilisé de boucles imbriquées qui auraient pu afficher des numéros en double. Vous pouvez également ajouter des éléments d'arrière-plan uniquement à des fins de conception. Cet exemple utilise des rayures aléatoires pour imiter les imperfections du papier. Idée de brome pour ajouter de la texture à un dessin. Il n'a pas l'air visible de loin, mais il est toujours visible dans l'aspect général, surtout lorsqu'il est imprimé sur du papier ordinaire. En outre, pour la visualisation des données, montrer certains éléments d'arrière-plan relatifs aux informations peut être très utile pour l'observateur. Vérifiez Nicholas Felton, travaillez pour quelques idées sur leur site Web est tombé Tron.com. Il existe de nombreux exemples tirés des rapports annuels qu'ils ont créés au cours des années, dont certains sont créés à l'aide du traitement. Vérifiez également leurs cours de sculpture et leur conception d'informations avec traitement, y compris la conception graphique et les conseils de codage relatifs au sujet. Il est maintenant temps de réfléchir à des façons d'ajouter de la texture à votre arrière-plan ou même à l'avant-plan en simulant des rayures ou des particules de poussière sur un objectif d'appareil photo. Ça aurait vraiment l'air vraiment cool. J'ai essayé de trouver des moyens d'intégrer le monde physique dans l'écran de votre ordinateur. C'est tout ce que j'ai pour cette leçon. Si vous avez d'autres idées, veuillez les partager dans la discussion ou même les partager dans vos exemples pour vos projets. J'aimerais bien les voir. Ensuite, nous parlerons d'un concept très intéressant de coloration de notre design en utilisant une technique similaire à la détection de collision en saisissant les entreprises de couleur et le voisin le plus proche. 8. Couleur 03 : Couleur par distance: Dans cette leçon, nous parlerons de la troisième technique de coloration. Et pour moi, c'est l'un des plus intéressants que j'ai appris et lu à ce sujet dans l'un des articles de Tyler Hubs. Il vient de l'expliquer. n'y a pas de codes. J'ai commencé à expérimenter et à trouver ma façon de le faire. Cette technique de coloration est donc un peu similaire à la détection de collision. J'appelle cette technique de coloration par distance parce qu'elle recherche l'agent ou l'agent coloré le plus proche d'un objet et utilise cette couleur qui peut produire quelque chose de similaire à une texture Voronoi avec de la couleur. Pour ce faire, nous allons continuer à partir de l'exemple de couleur un exemple ou du premier exemple de technique de couleur, celui d'interpolation des couleurs. Cependant, nous allons changer quelques choses. Nous allons donc avoir besoin d'agents. Et les agents vont être positionnés de la même manière que celui-ci. Pour celui-ci, cependant, nous allons modifier le comportement d'un agent et nous allons également modifier un peu le constructeur. Au lieu d'être aléatoire, nous allons donc créer une grille pour cela. Je vais ajouter deux arguments pour le constructeur de l'agent. Ainsi, lorsque nous créons une instance de la classe d'agents, nous pouvons décider de sa position. Donc dans la boucle for qui va créer la grille. Donc pour cela, nous allons faire un soulignement flottant x et un soulignement flottant y. Et puis je vais changer ces deux-là pour être x, ce qui est notre natif à l'intérieur de la classe, égal à tout le paramètre x ici qui sera égal. Et ensuite, pour le rayon, je vais également l'initialiser plus tard en fonction de la taille de la cellule. Et prenons la largeur du trait trois parce que nous n'avons pas besoin qu'elle soit énorme. Et ensuite, nous n'aurons pas besoin d'un angle dans une vitesse car le long été mis à jour de la même manière que nous avions l'habitude de mettre à jour le précédent. Et nous n'aurons pas besoin de la couleur 1 et de la couleur 2 car nous allons utiliser un autre agent pour colorer ces couleurs au hasard. Vous pouvez donc conserver l'un des deux kilowattheures de CO2 , puis le renommer en couleur parce que c'est ce que j'ai fait essentiellement. Et ensuite, je peux retirer ça d'ici. Je peux également supprimer cela. Et puis parce que nous dessinons surtout des cercles, donc nous n'avons pas besoin de la coupe de course parce que nous n'allons pas voir de casquettes de toute façon. Et je vais les garder les mêmes et supprimer tout ça. Maintenant, il suffit d'avoir un cercle et un XY. Et il aura un rayon. En fait, au lieu de rayon, je vais renommer ça en taille. Ce n'est donc pas déroutant comme auparavant. tailles, essentiellement le diamètre du cercle, car les cercles et les ellipses sont dessinés à l'aide du diamètre et non du rayon. Et je n'aurai pas besoin de la mise à jour pour la collision. Et maintenant, au lieu d'avoir le poids du coup constant, je vais le diviser par huit. Et cela, ou l'ajout de points 0, en fait un flottant. Au lieu de simplement faire ce que je fais habituellement comme ça. Parce que c'est un chiffre, je peux facilement mettre 0, puis le transformer en flotteur. Cela me donnera donc un calcul plus précis. La prochaine chose que je vais faire est d'aller ici. Et au lieu d'une ArrayList, je vais utiliser un tableau normal. Parce que je veux spécifier le nombre en fonction du nombre que je spécifie pour une grille. Je vais faire en sorte que cela compte. Donc je peux juste faire un entier, je ne peux pas. En fait, cela va être multiplié par le nombre parce que je veux la zone. Bien qu'ici, le compte représente le nombre de lignes et le nombre de colonnes. Disons donc que je veux que 10 commencent. Ok, alors passons en haut et j'expliquerai ce que j'essaie de faire ici. L'agent ne sera donc simplement les agents que nous allons voir à l'écran comme avant. Ce sont les agents que nous voyons et l'agent en coulisses qui vont être la source de nos couleurs. Au début, j'ai choisi une couleur aléatoire, mais ce n'est pas ce que nous allons utiliser pour notre agent. Ce sera donc les couleurs de nos agents de couleur. Nous allons être invisibles. Maintenant, sachant cela, je peux créer un autre tableau d'agents. Cependant, celui-ci va être les agents de couleur. Et le nombre de ces tableaux pour le tableau des agents de couleur dépendra de la couleur que vous souhaitez avoir dans votre conception. Donc, si je dis nouvel agent et que je ne mets que cinq couleurs, vous constaterez que la majorité dans certaines zones aura une seule couleur car il n'y a que cinq agents à partir desquels saisir la couleur. Cependant, si je mets 50, alors j'obtiendrai plus de variation de couleur. Commençons donc par cinq, et nous allons l'afficher. Nous pouvons donc maintenant supprimer tout cela. Nous n'avons pas de mise à jour car nous n'allons rien déplacer. Nous allons maintenant commencer à initialiser les agents ici. Je vais donc le faire pour l'entier I ou pour l'entier n, car je vais utiliser I et j litre égal à 0 et n est inférieur à la longueur du point des agents. Et maintenant, je vais dire n modulo count. Il va donc passer de 0 à compter. Donc voici 10, ça va passer de 0 à neuf. Et puis l'entier j est n divisé par le nombre. Donc, cela fait le reste de la division et par compte va passer de 0 à neuf, puis à nouveau de 0 à neuf. Il va donc passer par chaque rangée parce que j est divisé par le nombre. Parce que quel que soit le n à l'époque, diviser par le nombre va passer par les rangées. Et maintenant, je peux dire que pour les flotteurs x, pour la position x, il va être multiplié par la largeur de la cellule. Et puis, car y va être multiplié par la hauteur de la cellule. Et si nous initialisons ou avant cela, nous allons aller ici et faire la largeur et la hauteur des cellules pour la définir. Et ensuite, ici. La largeur sera donc divisée par un flotteur de dénombrements, comme nous l'avons fait auparavant. Ensuite, la hauteur de la cellule sera divisée par le nombre de flotteurs. Cependant, je veux aussi une marge, ou j'aime avoir une marge en tout temps. Je vais donc le couper d'ici et le mettre ici à la place. Et puis je vais le soustraire de la largeur. Donc la raison pour laquelle je dis que la marge est multipliée par 2 s, car ce que je définit comme une marge n'est qu'un côté de celle-ci. Donc, à partir de la largeur, j'ai besoin d'un à gauche et d'un autre à droite. va donc falloir le multiplier par deux pour obtenir le double. Je peux donc le soustraire de la largeur et de la hauteur. Et ensuite, ici, il va falloir le pousser. Mais avant de le faire, je veux d'abord vous montrer à quoi ressemble la subvention. Ensuite, nous pourrons le pousser par la marge. Maintenant, on peut dire agents. J'allais égaler un nouvel agent. Et le constructeur a besoin d'une position x, d'une position y et d'une taille. Donc, initialisons également la taille ici et je vais faire du kit le minimum, qu'il s'agisse de largeur de cellule ou de hauteur de cellule, pour m'assurer que nous avons toujours un cercle, surtout que nous l'avons défini comme un cercle ici. de toute façon. Donc, si c'est le cas, nous n'aurons pas de problème pour l' instant, car nous avons un carré pour Canvas. Cependant, si nous avons une toile verticale ou une toile horizontale, cela nous aidera à n'obtenir que des carrés ou des cercles. Et maintenant, nous l'avons affiché ici. Donc, si je le dirige, oh, je devrais l'avoir comme n ici. Maintenant, si nous y étions, nous pouvons voir les cercles. Et c'est là que j'ai dit qu'il va falloir le pousser. ce moment, parce que nous avons supprimé ou soustrait, le double des marges de la largeur. Nous avons maintenant une centaine de pixels ici. Donc, si je pousse cela par marge, en y ajoutant simplement de la marge, ça va pousser le tout vers la droite et vers le bas. Vous pouvez donc voir parfaitement les grilles. Je vais également dessiner des rectangles ou des carrés aux positions x et y en fonction de la taille et de la taille. Nous allons donc aussi en avoir besoin, que vous puissiez voir pourquoi ce n'est pas la même chose ici. Et ici. Parce que nous dessinons comme si les cercles étaient dessinés à partir du coin gauche ou supérieur gauche. Alors qu'ils sont réellement attirés du centre. Vous pouvez donc changer le mode ellipse en coin ou simplement l'ajouter ici. Je peux donc simplement ajouter une taille divisée par deux. Et ici, la taille est divisée par deux. Nous pouvons choisir la cellule avec ou vendre la hauteur. L'un ou l'autre va bien se passer. Cependant, pour la même raison que nous avons déjà évoquée, je vais l'utiliser car cela va m'assurer que cela va me donner le minimum, que ce soit la largeur de cellule ou la hauteur plus petite. Il s'insère donc toujours à l'intérieur de mes cellules II. En fait, au lieu de le faire ici, je vais le faire ici. Ou vous pouvez le faire de cette façon simplement pour le garder propre afin de vous assurer qu'il n'est ajouté qu'une fois que tous ces éléments ont été créés une fois que le médecin a été établi. Et la raison pour laquelle ils ne s'alignent pas sur les rectangles. Les cercles ont été poussés. Cependant, ils ne s'alignent pas sur les rectangles car les rectangles sont dessinés à partir du coin. Nous allons donc devoir le faire, juste pour voir que cela fonctionne bien. Je peux simplement faire Centre pour leur mode rectangle. Et maintenant, nous pouvons voir qu'il s'adapte parfaitement. Nous n'aurons donc plus besoin des rectangles. C'était juste à nous de voir que notre réseau fonctionne bien. Ainsi, la largeur du premier trait, nous pouvons le rendre encore plus petit en le divisant par 12 car maintenant il se chevauche tout ou par 15. Et je vais aussi réinitialiser l'arrière-plan pour que nous ne voyions pas de lignes tordues Bs. Maintenant, c'est beaucoup plus propre et je vais augmenter le nombre et diminuer les marges. Donc, plus de marges, je vais le garder à 20 ans. Et puis pour celui-là, je vais le faire 50 ou peut-être un peu plus gros. Parce que j'ai besoin d'autres cercles pour voir comment ils sont colorés. Maintenant, pour les colorants, je vais l'initialiser en boucle. Donc pour celui-là, parce que ça va être aléatoire, je vais dupliquer le constructeur et en créer un autre qui n'en possède aucun. Et cela va être aléatoire entre la largeur moins la marge, ou entre la marge et la largeur moins la marge. va de même pour y. Et ensuite, je vais faire un aléatoire entre 35 et ici. Maintenant, je peux utiliser des agents au poste où je vais égaler un nouvel agent. Et ce sera le constructeur vide. Et si je l'affiche ici, vous pouvez simplement changer les agents de couleur et il va saisir chacun et ça va l'afficher. J'ai fait des agents au lieu d'agents de couleur. Donc maintenant, si je veux juste l'initialiser, on peut vraiment les voir en haut. Pour que vous puissiez les voir, ils sont très petits. Donc, si j'augmente simplement la taille à quelque chose de 10 à 50, et qu'en fait, nous n'avons pas besoin qu'ils soient aussi aléatoires, alors je vais les faire 20. Et maintenant, nous pouvons les avoir invisibles, mais nous nous sommes assurés qu'ils sont là. Et chacun a une couleur différente. Je vais le garder comme guide, donc je ne vais pas le supprimer pour que je puisse le décommenter quand je veux. Disons donc que si j'en ajoute 50, je veux voir à quoi ça ressemble. Je peux le commenter et activer celui-ci. Nous avons maintenant notre grille. Ok, une autre chose que je veux faire n'est pas seulement d'obtenir la largeur de la cellule et de la hauteur de la vente, je veux qu'elle soit plus petite. Disons donc que je veux le diviser par 1,5. Je peux donc le compenser. Et maintenant, je peux revenir à la taille et la changer à huit parce qu'elles ne vont pas se chevaucher. Je peux donc mieux les voir. Et je peux compenser cela par une valeur aléatoire. Et ces valeurs aléatoires vont être. De 0 à la taille divisée par deux. Vous pouvez donc les voir, ils sont un peu plus aléatoires et ils ont l'air un peu plus intéressants. Et nous faisons aussi la hauteur, ou la position Y aussi. Maintenant, nous avons un peu plus de variation et le design, revenons à la couleur, ce qui est plus important maintenant que nous avons établi notre design, créons notre méthode de transfert de couleur. Donc, à l'intérieur de notre classe d'agents, je vais créer une méthode que je vais appeler prendre de la couleur ou prendre un appel. Et il va falloir un autre tableau d'agents. Ensuite, je vais appeler les agents. Et tout cela va rendre une couleur. Maintenant, ce que nous allons faire ici, c'est saisir la gamme d'agents qui contiennent couleurs que nous allons utiliser pour colorer un dessin en fonction de la distance par rapport à ces agents. Je vais donc combiner toute la distance à l'intérieur d'un tableau ou d'un dictionnaire. Et puis je vais passer au crible tous ces agents colorés. Ensuite, je vais vérifier lequel a la distance la plus courte par rapport à l'un de mes objets. Donc, ce qui est le plus proche de mon objet, ce sera la couleur de mon objet. Pour ce faire, je vais utiliser un dictionnaire float. Je vais appeler ça des digests. Et puis l'initialiser est aussi simple que de le faire. Ensuite, je vais parcourir toutes ces distances ou tous les agents et vérifier la distance. Chaque fois, je vais vérifier la distance entre x et y et les agents x et y. Et maintenant, cela va être défini à l'intérieur du tableau ou du dictionnaire. Donc, la façon dont vous pouvez le faire est simplement en nous appelant puis en appelant la méthode set. Et la méthode set prend une clé. Je vais donc lui donner l'indice, puis il va prendre la distance comme valeur. C'est donc la clé du dictionnaire et il s'agit des valeurs des dictionnaires. Et la raison pour laquelle j'utilise un dictionnaire est qu'il a une méthode de tri de valeurs supérieures à 18 ans. Et cela va les trier par ordre croissant. De cette façon, je peux saisir le premier, et c'est mes agents de couleur les plus proches de n'importe quel objet spécifié pour le moment. Je vais donc prendre toutes les clés. Et vous pouvez les saisir à l'aide de la matrice de clés. Et puis je vais retourner l'agent à CHI 0 et je vais prendre la couleur de ça. C'est une bouchée. Cependant, si vous le faites étape par étape, c'est très facile à comprendre. Donc, ce que j'essaie de faire, c'est de saisir tous les agents de couleur, vérifier sa distance avec n'importe quel agent que je spécifie. Je peux donc appeler cela la couleur du tableau de l'agent que j'ai ici, qui est celle-ci. Et puis, pour chaque itération, je vais vérifier la distance entre cet agent dans le tableau des agents de couleur. Ensuite, je vais saisir toutes ces distances, les mettre dans mon dictionnaire float, puis je vais trier les valeurs par ordre croissant afin d'obtenir l'agent de couleur le plus proche de mon agent. Ensuite, je vais saisir les clés de ce dictionnaire pour pouvoir obtenir l'agent à la première clé ou à la clé dans la première position du tableau et un dictionnaire. Et ensuite, je vais prendre la couleur de ça. Ce sera donc la couleur de l'agent de couleur le plus proche de mon agent. Maintenant, si je retourne ici, je peux l'utiliser à l'intérieur de mon tableau. Je peux donc le faire de cette façon. Couleur du point de l'agent. Je peux donc saisir la couleur de l'agent et je peux l'attribuer aux agents dot-dot-dot prendre la couleur à partir du ou en boucle dans le tableau des agents de couleur. Cela va donc effectuer ce que nous venons créer sur chaque agent dans le tableau des agents. Et ensuite, il va le régler à sa couleur. Maintenant, si je fais ça, nous devrions obtenir des résultats complètement différents. Et maintenant, si vous voulez voir les agents de couleur juste pour voir comment cela fonctionne, vous pouvez l'afficher et vous pouvez voir que celui-ci est le plus proche de ceux-ci, donc il a cette couleur. Cependant, pour celui-ci, ils sont les plus proches de cela, c'est pourquoi ils ont la couleur orange et ainsi de suite et ainsi de suite. Et comme je l'ai dit, si vous voulez n'en avoir que cinq, vous aurez moins de variations de couleurs car il y a moins de chances que certaines couleurs apparaissent puisque nous n'avons que cinq couleurs dans la première et vous obtenez une couleur aléatoire. instant, nous n'avons pas de rose, nous avons deux jaunes à la place. Ou vous pouvez même choisir la probabilité de choisir une couleur plutôt que l'autre dans votre choix de couleur aléatoire. Mais la façon dont j'aime le faire est d'ajouter 50 et de cette façon, je peux obtenir plus de variation de couleur. Et si vous affichez cela, vous pouvez avoir plus de couleurs. Donc, si je reviens à cinq, nous pouvons voir que nous avons moins de variations de couleurs. C'est toujours un joli look, mais si vous voulez que toutes les couleurs apparaissent, vous devrez soit modifier la probabilité que certaines couleurs apparaissent plus que d'autres. Vous pouvez également ajouter d'autres agents pour les agents de couleur. Donc, plus vous ajoutez de variations de couleurs, plus vous aurez de variations de couleurs. Donc, si vous rendez celui-ci beaucoup plus grand, nous pourrons en ajouter d'autres. Vous pouvez voir le design beaucoup mieux. Il vous donne en fait une texture de type Voronoi. Plus vous avez de couleurs dans votre tableau, plus vous pourrez la voir. De plus, si vous changez le trait ici pour le remplir à la place. Et pas d'accident vasculaire cérébral pour celui-là, vous pouvez vraiment mieux le voir. C'est donc un peu similaire à la coloration à l'aide d'une image d'arrière-plan. Cependant, il saisit la couleur de l'agent de couleur le plus proche au lieu de simplement saisir le pixel qui se trouve en dessous. Mais si vous avez un design que vous avez créé pour utiliser votre iPad, votre tablette Wacom ou n'importe quelle tablette, il a une largeur de stylet. Vous pouvez ensuite créer des dégradés ou des formes géométriques, remplissant simplement le canevas de couleurs et en l'utilisant comme image d'arrière-plan pour colorer votre dessin. La façon dont vous pouvez obtenir plus de variations de couleurs sans simplifier quelque chose comme ça, par exemple. C'est tout pour cette technique de coloration. Ensuite, nous allons nous attaquer à la quatrième technique de texturation, qui consiste à ajouter des ombres à votre design. 9. Texture 04 : ombres de descente: Cette dernière technique de texturation est également très simple car nous ajouterons ombres simples à nos conceptions pour créer une certaine profondeur dans notre travail. Pour vous montrer ce que je veux dire par simple ombre. Créons deux cercles. Et j'ai déjà ajouté la couleur et l'arrière-plan. Donc, si vous voulez prendre ces couleurs, n'hésitez pas à le faire. Si vous voulez utiliser vos propres couleurs, je l'encouragerais vraiment. Créons maintenant l'ombre simple. Cela se fera facilement en créant deux cercles. Maintenant, le premier cercle sera l'ombre, car tout ce qui vient en premier sera au-dessous du second. Ce sera donc, disons, une largeur divisée par deux. La hauteur divisée par 2 doit être au centre. Et ensuite, nous allons juste lui donner une largeur de 100. Et puis il en va de même pour celui-là. La seule différence est que celle du bas va être un peu décalée. Donc, soit décalez-le juste vers la droite, soit vous pouvez le décaler vers la droite et vers le bas où vous choisissez la lumière qui provient d'eux, passez simplement à l'opposé de cela. Je choisis donc la lumière qui vient du coin supérieur gauche. Rappelez-vous également qu'il s'agit d'une ombre très simple, donc ce n'est pas réaliste. Cela nous apportera simplement de la profondeur dans nos conceptions. Et maintenant, pour faire la différence entre les deux, je vais donner un peu de noir. Et cette fausse, disons une des couleurs. Je vais donc lui donner la première couleur. Et ne faisons pas d'AVC pour l'instant. Et c'est essentiellement ce que j'entends par simple ombre. nous puissions diminuer cela, disons qu'il faut cinq. Et de cette façon, nous ajoutons un peu de profondeur. Maintenant, cela ne fonctionnera pas très bien ici. Mais pour la classe que nous allons créer, une fois le design terminé, vous verrez un peu de différence en ce qui concerne les profondeurs de votre conception. Supprimons donc tout cela pour l'instant et commençons à créer la classe. Je vais donc appeler cette classe une spirale. Parce que nous allons créer une forme en spirale. La première chose dont nous aurons besoin pour cette forme en spirale est la position principale X et Y. Et ce sera flottant x et y. Et parce qu'une spirale est essentiellement un cercle qui se déplace pour créer des cercles concentriques. Et pour se déplacer autour du cercle, nous allons rencontrer plusieurs composantes. Et ce sont le centre x, le centre y, le rayon de départ et l'angle. Je vais donc simplement créer ces centres x, centre. Pourquoi ? Et puis démarrez le rayon et un angle. Et maintenant, je vais initialiser le rayon de départ et l'accent central sur y et l'angle que vous êtes le premier rayon de départ. Je vais en faire une valeur aléatoire de, disons que dix à 30 pour commencer le rayon sera le cercle de départ dans cette spirale. Et puis le centre x devient une valeur aléatoire à partir du rayon de départ deux avec les radios de départ moins. Et ensuite, pour le centre, pourquoi ? Ce sera exactement la même chose, mais avec la hauteur. Enfin, pour angle, il s'agira d'une valeur aléatoire comprise entre un et cinq. Cela n'a pas vraiment d'importance. Et la raison pour laquelle je fais aléatoire l'angle ou que je m'initialise et surentend parce que si je ne fais pas cela et que je commence à créer la spirale, ils commenceront tous du même angle. J'ai donc besoin d'un peu plus de variation dans chacune des spirales. Et vous pouvez y parvenir en randomisant l'angle de départ. Examinons la spirale. Pour créer la spirale, nous allons dessiner des points autour du cercle, mais le cercle ou le rayon de ce cercle va augmenter et cela créera la spirale. Pour cela, vous pouvez soit utiliser des points, puis utiliser un poids de trait pour la taille. Mais ici, je vais juste utiliser une ellipse sera à x et y, et ensuite elle aura une taille. Je vais donc également initialiser une taille. Ensuite, j'ajouterai une couleur. Nous avons déjà une gamme de couleurs. Je vais donc l'utiliser ici. Il va également s'agir d'une couleur aléatoire. Je ne définirai pas non plus ici. Au lieu de se mettre ici. Enfin, nous allons avoir une méthode de mise à jour. Ainsi, dans la méthode de mise à jour, nous allons augmenter l'angle de déplacement. Ensuite, nous créerons également nos valeurs x et y. Et ils vont utiliser le cosinus de l'angle B, B Angle croissant. Et puis y va être le sinus de l'angle. Et ensuite, nous allons le multiplier par le rayon. Enfin, pour le pousser au centre où nous en avons besoin, nous allons devoir ajouter le centre x et le centre y. Par conséquent, epsilon y va définir la position de l'ellipse qui sèche autour d'un cercle. Ensuite, le rayon de départ va définir le rayon de ce cercle. Ensuite, le centre x et le centre y vont définir le centre de ce cercle et l'angle s'incrémentera. Cela va dessiner le même cercle autour du point central. Il faut donc augmenter le rayon de départ. Je vais donc également augmenter la valeur que j'appellerai encre. Et je vais le définir ici. Ensuite, je l'ajouterai au rayon de départ. Mais nous devons le faire avant la multiplication. Ils vont donc ici et créent un exemple de spirale de mort. Je peux voir comment cela fonctionne réellement pour créer une nouvelle spirale. Et puis, à l'intérieur de l'essai, une mise à jour a de nouveau affiché. Donc, les points en spirale affichent l'absorption de Glenn parce que j'ai oublié d'initialiser la taille. La taille sera donc aléatoire sur le coup de pied de 5 à 7. Et maintenant, nous pouvons voir le début d'un cercle. Cela aura donc un rayon de départ, puis, au fur et à mesure qu'il se déplace, il incrémentera le rayon, sorte qu'il crée une spirale. Maintenant, c'est amusant et tout, mais je pense que ce sera encore plus intéressant si nous ajoutons un peu de bruit à ce mouvement. Donc, au lieu de créer des cercles parfaits, ajoutons une certaine distorsion. Donc, si je retourne ici, je peux ajouter deux valeurs et j'appellerai une distorsion X et l'autre une ligne. Et avant l'initialisation x et y. Initialisez l'histoire x pour qu'elle soit du bruit. Et faisons-le diviser x par un 1000. Et ensuite, j'utiliserai l'angle pour le second. Et ensuite, pour le stockage. Pourquoi ? Je vais faire du bruit et rendre la balance un peu différente. Je vais donc gagner 3000 pour celui-là. Et puis nous utiliserons l'angle pour le second ou même l'angle, multipliez-le par 0,5, disons juste pour le changer un peu. Et je peux ajouter ça à l'angle. Je me déforme donc et je continue d'écrire ce gris parce qu' il détruit en fait l'angle parfait pour ce cercle. Et puis je vais ajouter une distorsion y à la position Y ici. Maintenant, si je le lance, et vous pouvez voir qu'il y a un peu de bruit dans la spirale parce que nous avons ajouté cette distorsion ici. Cela donne une sensation plus naturelle. On a donc l'impression que quelqu'un l'essaie réellement à la main. Vous pouvez également les rendre identiques en ce qui concerne la deuxième dimension du bruit. Et cela ne le détruira pas autant. Il conservera donc toujours la forme circulaire et il ne deviendra plus comme une ellipse. C'est donc à vous de décider comment déformer l'image. Nous allons donc le garder ainsi. Une autre chose que nous pouvons ajouter à cette méthode de mise à jour est de varier la direction de l'angle. Donc, en ce moment, tout va dans le sens des aiguilles d'une montre. Nous pouvons le déplacer pour aller dans le sens contraire des aiguilles d'une montre. Mais nous verrons cela si nous créons une série de spirales. Créons donc un tableau. Je vais en donner un compte de 10. C'est aller à l'intérieur de la lèvre. Et il en va de même pour celui-ci. Maintenant, si je fais ça, nous allons voir plusieurs spirales. Comme vous pouvez le voir, ils vont tous dans le sens des aiguilles d'une montre. Changez cela. Je vais créer une autre variable que je vais appeler, donc direction. Et ensuite, il aura une valeur aléatoire comprise entre 0 et un. Et puis je vais lui donner une probabilité de 50 % d'aller dans le sens des aiguilles d'une montre. Donc, si la direction est supérieure ou inférieure à 0,5, car 50 % est la moitié. Sinon, j'ai besoin de l'angle pour aller dans la direction opposée. Mais je vais faire la même vitesse. Et maintenant, si je fais ça, vous verrez que certains d'entre eux iront dans le sens des aiguilles d'une montre, tandis que d'autres vont dans le sens inverse. Celui-ci va donc dans le sens inverse des aiguilles d'une montre, dans aiguilles d'une montre, et ceux-ci vont dans le sens des aiguilles d'une montre. Maintenant, l'important est de créer les ombres pour créer la profondeur. Comme vous pouvez le constater, c'est très 2D. Et pour ce faire, je vais créer une autre méthode que j'appellerai graphique. Cela va donc avoir un décalage, une couleur. Et n'importe qui ici, je vais avoir ces deux-là. Et j'aurai la couleur comme celle-ci, qui est C. Et ensuite j'ajouterai aussi le décalage comme nous l'avons fait auparavant à x et y. De cette façon, je peux appeler graphique deux fois par an, une fois pour l'ombre et une fois pour la forme principale. Donc pour l'ombre, je vais appeler graphique avec, disons, un décalage de 15 et une couleur noire. Et puis je vais encore appeler graphique. Mais cette fois-ci avec un décalage de 0 et du charbon comme couleur aléatoire que nous avons créée ici. Maintenant, si je fais ça, nous allons avoir une ombre qui suit la spirale. Faisons en fait cinq. Vous pouvez donc mieux le voir. Vous remarquerez maintenant une chose qui ne va pas très mal avec cette forme, car nous dessinons l'ombre pour chaque point. Certaines fois, vous constaterez que l'ombre va passer au-dessus de la forme principale parce qu'elle se déplace séparément. Comme vous pouvez le voir ici, cela ne ressemble pas vraiment à quelque chose sous la forme principale. Et pour ce faire, nous allons utiliser des graphiques P. Il est donc très facile de résoudre ce problème car les graphiques P nous permettent de créer plusieurs couches qui ne se croiseraient jamais. Ils vont littéralement l'un sur l'autre sans jamais se rencontrer. C'est donc un peu comme se déplacer sur l'axe Z, comme Photoshop et Illustrator et toutes ces applications qui utilisent des calques. C'est très simple à faire. Je vais juste créer une couche graphique de pointe ici. Et au lieu de simplement utiliser le remplissage comme ça, je vais utiliser un calque pour les deux. Et puis pour n'importe quel graphique p, il va falloir commencer par commencer. Et puis dessinez. Ensuite, nous passons le premier calque pour celui-ci, qui sera le calque d'ombre, car nous avons besoin qu'il soit en bas. Et sur la deuxième couche va être le graphique principal. Et puis je vais l'ajouter ici. J'ai donc besoin de deux couches. Tout d'abord, j'appellerai la couche 1. Le deuxième paramètre passe à la couche 2. Maintenant, dans l'onglet principal, cela va se plaindre. Nous allons donc également devoir créer deux couches graphiques p ici. Le premier que je vais appeler, et parce que nous avons des tableaux, nous devrons également créer un tableau. Donc, le premier sera le graphisme. Il contient donc tous les principaux graphismes. Et ce sera un graphique UP qui aura le même nombre et la même chose exacte pour les ombres. Ensuite, lorsque nous initialisons ces spirales, nous allons également créer le graphique ou chaque couche graphique pour le tableau graphique. Il va créer des graphiques ou créer des graphiques. Nous allons conserver tous les calques de la même taille que la toile, donc la largeur et la hauteur, puis la même chose s'applique aux ombres. Cela va nécessiter les deux arguments, qui seront le premier que nous avons dit être les ombres. Et ensuite, le second sera le graphique principal. Mais maintenant, si je lance ça, on ne verra rien car les graphiques P ne s'affichent que si vous le séchez à l'aide d'une image. Ainsi, la première est garantie d'ombres à la position I. Et cette image va être dessinée à 000 car elle a la même largeur et la même hauteur que la toile. Et ensuite, la deuxième image sera chacun des graphismes. Et il sera également à 000$. Maintenant, si je fais ça, on verra qu'ils ont tous de nouveau des coups. Je vais donc retirer le NoStroke d'ici et je vais devoir le mettre à l'intérieur d'ici parce qu'il doit être à l'intérieur du calque. Vous pouvez également l'ajouter une fois que vous avez initialisé les graphiques ici. Mais ça va être compliqué car il va falloir écrire, commencer des dessins et dessiner à nouveau juste pour l'ajouter. Il est donc beaucoup plus facile de l'ajouter à cela parce qu'il devient une ligne de plus. Et maintenant, si je fais ça, ça devrait marcher. Maintenant que la spirale tourne autour, elle ne se chevauchera plus. Ainsi, l'ombre ne chevauchera jamais le graphique principal. Ajoutons d'autres spirales pour qu'elle remplisse la page. Vous pouvez donc voir comment l'ombre a un effet sur l'ensemble du design. Après avoir exécuté cela un peu, vous pouvez commencer à voir un peu plus de profondeur et le design plutôt que d'avoir quelque chose de plat sans cette ombre, même si c'est très simple et peu réaliste, vous voir un peu de dimension à quelque chose comme celui-ci peut ajouter beaucoup d'intérêt à certains des designs que vous avez. Donc, si jamais vous avez l'impression que vos dessins sont un peu plats, ajoutez simplement une ombre simple en décalant la même forme et voyez si cela le corrige. C'est à peu près tout cela pour la dernière technique de texturation. Ensuite, nous discuterons de la dernière technique de coloration, savoir l'utilisation de masques. 10. Couleur 04 : Couleur avec des masques: Pour la technique finale de coloration, nous allons discuter des masques. Si vous connaissez le masque Photoshop, cela devrait être un morceau de gâteau. Sinon, il suffit de suivre et ce sera facile à comprendre. Maintenant, l'idée d'utiliser des masques pour colorer votre design n'est pas forcément très conventionnelle. Mais comme je le vois, vous pouvez coder tout ce que vous voulez, n'importe quel graphique que vous voulez, disons que des cercles aléatoires à l'écran. Ensuite, vous pouvez l'utiliser pour masquer un calque d'arrière-plan que vous avez créé d'autres cercles aléatoires. Ainsi, on dirait que le dessin en haut, qui est le masque, est coloré par le calque sous-jacent. C'est parce que chaque fois que j'utilisais des masques dans Photoshop, j'ai toujours eu l'impression que c'était un moyen de révéler quelque chose pour ma forme ou pour mon masque. Disons donc que vous avez la silhouette d'un danseur et que vous voulez ensuite mettre un fond d'étoiles qui est une façon de colorer cette silhouette. Il ne s'agit pas seulement du noir ou de la couleur de la photo. Le concept est donc très simple et la coda l'est aussi. Maintenant, pour les masques, vous aurez besoin de graphiques ou d'images p. Supposons donc que vous ayez une image ou une image en noir et blanc que vous souhaitez utiliser comme masque. Vous pouvez l'importer ou le charger en tant qu'image dans le traitement et l'utiliser comme masque. Mais pour cet exemple, nous n'allons utiliser que des graphiques P. Nous allons donc créer le masque à l'aide de l'art génératif et du calque d'arrière-plan, qui sera notre couleur ici. Nous commencerons par une seule forme dans chacun des calques, juste pour vous montrer comment fonctionne le masque. Le premier que je vais appeler masque, et le second je vais appeler G et ensuite nous l'initialiserons ici. Donc pour masque, et il va créer un graphique comme nous l'avons fait. La leçon précédente aura la même largeur que le canevas et la même hauteur. Il en va de même pour la couche graphique. Et maintenant, nous pouvons dessiner nos formes à l'intérieur de chacune d'elles. Donc, pour dessiner dans n'importe quelle couche graphique PPE, vous aurez besoin de la méthode de début de dessin et de la méthode de dessin. Et vous devrez toujours référencer le calque graphique. Ainsi, la variable, le nom de la couche graphique. Ici, la couche graphique p que nous avons créée s'appelle masque. va donc falloir y faire référence encore et encore. Donc même pour le trait, pour le remplissage, pour les formes que vous allez dessiner. Vous allez toujours devoir référencer un masque. Autrement dit, si vous voulez le dessiner à l'intérieur du masque, si vous voulez le dessiner à l'intérieur de G, vous devrez faire référence à ce G. Et maintenant je vais dessiner un cercle. Et cela nécessitera une position x, position y, puis une largeur. Et pour sécher, nous allons simplement utiliser l'image et référencer ce calque, puis le positionner. Et comme c'est la même largeur que notre toile, nous allons la placer à 000 pour qu'elle s'adapte à la toile. Maintenant, si je fais ça, nous devrions voir ce cercle. Ensuite, nous allons créer celui-ci. Donc ça va aussi commencer par le tirage au sort, puis dessiner. Et ensuite, je vais aussi dessiner un cercle. Je vais le rendre un peu plus gros, juste pour que nous le masquions, vous verrez qu'il devient plus petit parce que ce masque va le couper. Ensuite, nous allons le dessiner de la même manière que nous avons dessiné le masque. Et maintenant, il s'agit de la couche graphique, du calque graphique G, et il se trouve au-dessus du masque. Changeons les couleurs des deux en utilisant l'une des couleurs de mon tableau de couleurs. J'ai utilisé le même que celui que j'ai utilisé auparavant dans les autres cours. Et pour ajouter une couleur à notre couche graphique, il suffit de remplir. la même manière que nous le faisons ici, à l'intérieur de l'esquisse, la seule différence est que nous le piégeons à l'intérieur de cette couche. Au lieu de le placer sur la couche graphique principale, je vais choisir n'importe laquelle des couleurs. Ce n'est pas vraiment important pour le moment. Et je vais aussi faire NoStroke pour les deux. Parce que pour le calque de masque, si vous utilisez des masques auparavant, pour le blanc ou tout ce qui est blanc va montrer ce qui se trouve en dessous, puis le noir va cacher tout le reste. Donc, si vous avez un cercle blanc avec un trait de noir, alors. Tout ce qui se rapproche de ce coup va être caché. Je ne ferai donc aucun coup parce que je ne veux pas que cela interfère avec un masquage. Maintenant que nous savons à quoi ils ressemblent ou à quoi ressemble le masque, nous pouvons simplement l'enlever ici et nous pouvons aller avant de dessiner l'image, je peux simplement faire un masque de points g. Utiliser le masque. Donc, peu importe ce que je veux masquer, j'utiliserai simplement la méthode du masque dessus et ensuite j'utiliserai le calque de masque. Et si je l'exécute, il devrait être plus petit maintenant parce que le masque a coupé cette forme. Mais si vous regardez de près, vous verrez que c'est un peu gros. Et la raison en est que nous n'avons pas d'arrière-plan pour le calque ni pour aucun des calques. Donc, pour le calque de masque, ajoutons un fond noir car nous voulons cacher quoi que ce soit là, car si nous le mettons en blanc, tout sera affiché. Je vais donc faire 0 pour le noir maintenant, images beaucoup plus nettes parce que nous avons réinitialisé l'arrière-plan et nous pouvons faire la même chose pour celle-ci. Cependant, cela ne s'affichera pas ici, car le masque est plus petit que ce calque qui tente de masquer. Toutefois, si le cercle est plus petit que, nous pourrons voir la couleur derrière lui. Donc, si je mets un arrière-plan rouge, ou disons cela en tant que couleur du tableau. Disons donc la deuxième couleur du tableau. Et ensuite, je vais le rendre beaucoup plus petit. Donc, je vais agrandir ça, et ensuite je ferai 100. Je viens donc de changer de taille. Et maintenant, si je l'exécute, je vois en fait le calque d'arrière-plan de cette couche graphique. Nous avons donc colorié notre cercle à l'intérieur du masque en utilisant tout ce qui se trouve en arrière-plan. Pour cet exemple, il semble contre-intuitif de créer tout cela simplement pour créer deux cercles de couleurs différentes que nous aurions pu créer en utilisant seulement deux lignes de code. Cependant, cela sera bénéfique si vous avez quelque chose qui bouge en arrière-plan et que vous voulez simplement une mascotte avec un tas de cercles aléatoires sur le dessus. Donc, si je retourne à chacun de ces calques et que, au lieu de créer un cercle pour chacun, je créerai un tas de cercles là-bas. Pour celui-ci, nous allons créer un tableau. Et donnons juste un compte aléatoire que je vais initialiser ici. Je vais les garder tous de la même taille pour l'instant. Mais vous pouvez également aléatoirement les tailles. Donc, si je retire le masque un peu et que j'ai randomisé les positions de 0 à la largeur, puis de 0 à la hauteur. Ou vous pouvez aussi, si vous définissez cela comme un rayon ici, alors il peut faire à partir de se rapporte au diamètre parce que c'est ce que c'est, ce que c'est réellement. Et puis du diamètre divisé par deux à quoi ? Diamètre moins divisé par deux. Et il en va de même ici. Et maintenant, nous avons un tas de cercles. Donnons-leur donc des couleurs différentes. Et faisons de la couleur d'arrière-plan. Celui que j'ai défini ici, pour que le bleu ne se cache pas. Augmentons cela à peut-être 50. Nous en avons donc beaucoup plus. Maintenant, si je révèle le calque de masque, nous devrions pouvoir voir une autre façon de colorer ce cercle. Créons également la même chose pour le masque. Et allons-le plus petit. Au lieu d'avoir un seul cercle, nous ferons des cercles aléatoires et nous n'avons pas besoin du remplissage aléatoire car nous avons besoin qu'ils soient tous blancs afin de montrer ce qu'il y a en dessous. Et redéfinissons cela ici pour que nous n'ayons pas de doublons. Et j'ai oublié de changer ça en masque. Maintenant, ça devrait fonctionner. Et la raison pour laquelle cela se produit lorsque vous ne voyez pas où les choses commencent et finissent, c'est parce que mon arrière-plan pour le canevas réel est de la même couleur que l'arrière-plan de cette couche graphique. Donc, si je change ça par, disons 30, qui sera de couleur gris foncé. Et vous pourrez voir le masque et le calque sous-jacent. Et créons également un nombre différent pour les masques. C'est pourquoi j'ai ajouté cela en tant que technique de coloration car vous pouvez voir que quelle que soit la forme que vous créez dans le calque de masque, quel que soit le design , qu'il soit mobile ou statique, vous pourrez la colorer de manière unique parce que vous un autre calque qui peut également se déplacer si vous voulez qu'il soit animé. Mais pour cet exemple, nous ne faisons que des images statiques. Il y a un autre exemple ou une autre façon de vous montrer comment nous pouvons masquer cela. Donc, au lieu de simples cercles aléatoires, nous allons créer une colonne de lignes. Ce ne sera pas différent. C'est juste un exemple différent que je veux montrer. Au lieu de cela, nous allons passer à la ligne de travail. Et il n'y aura pas de méthode sans AVC sur celle-ci, mais elle ne sera pas remplie. Mais même si je ne mets pas celui-ci parce que les lignes ne prennent que des traits, cela n'affectera rien. Mais j'aime juste l'avoir au cas où je changerais quoi que je réentende ou ajoute quelque chose qui nécessitera un remplissage et je ne veux pas qu'il ait un remplissage. Je vais donc créer une ligne ou, en fait, gardons un cercle C. Et ensuite, je vais juste commenter et je vais créer une ligne ici. Je veux donc que chacune des lignes passe de 0 à la largeur, puis s'étend sur toute la hauteur de l'écran. Je n'ai donc besoin que d'une hauteur de cellule ou je dois définir une hauteur de cellule en fonction du compteur que j'ai. Donc, je vais juste faire flotter. La hauteur de la cellule va être égale à la hauteur de l'écran divisée par le flotteur de m comptage. Autrement dit, si je ne l'ai pas fait flotter, oui, je leur ai fait des entiers. Et ensuite, pour les expositions, ça va être statique. La seule chose qui va changer, c'est la position Y. Donc, pour x, nous passons de 0 à la largeur. Et puis j'ajouterai le Y car chaque côté est libre à chaque point de la ligne. Je vais donc multiplier par la hauteur de la cellule. Et il en va de même ici. Et parce que le trait est noir par défaut, cela ne va pas montrer quoi que ce soit. Je vais devoir changer de masque en masque, de couleur blanche. Et il définira également le poids du trait en fonction de la hauteur de la cellule. Je vais donc diviser la hauteur des cellules par deux parce que je ne veux pas qu'elle couvre tout l'écran. Si je le mets sous forme de pliage de hauteur de cellule et que nous couvrirons tout l'écran, montrez tout le calque d'arrière-plan. Ensuite, nous pouvons également le montrer ici juste pour vérifier à quoi il ressemble avant d'utiliser le masque. Nous allons donc réduire le nombre de comptes. Si je fais 10 et j'ajoute une marge aussi. Je vais donc le mettre ici. Et la raison pour laquelle je les mets au-dessus de mes formes que je crée est simplement parce que je veux qu'elles soient fermées. Je sais donc qu'ils appartiennent à celui-ci et je sais que je ne les changerai nulle part ailleurs. Ce ne sera que pour celui-ci, mais n' hésitez pas à les placer ici en tant que variables globales. Donc, pour la marge, faisons 50 et ensuite je ferai passer ça de la marge puis de la largeur moins la marge. Et puis je veux que cela soit poussé par la hauteur des cellules divisée par deux. Et il en va de même pour cela. Vous pouvez donc également créer une variable pour cela car nous sommes en train de dupliquer. Et pour que notre code reste propre, nous devrions simplement en faire une variable. Je vais donc appeler ça la position légère position k. Les marchands sont trop gros, alors faisons-les 20. Et maintenant, nous n'avons plus besoin de montrer le masque et utilisons la méthode du masque. Et voilà, utiliser des masques est vraiment amusant dans l'art génératif car vous êtes capable de générer le masque et le calque d'arrière-plan en même temps et d'utiliser l'un pour cacher l'autre. J'ai aussi un tutoriel YouTube sur quelque chose d'animé, être en arrière-plan derrière ces masques. Donc, si vous souhaitez voir comment cela est créé, il suffit d'aller voir cette vidéo. Mais pour ces exemples, j'essaie de les rendre statiques simplement pour me concentrer sur les techniques plutôt que de se concentrer sur l'animation ou de compliquer les exemples. C'est tout ce que nous avons à apprendre aujourd'hui sur cette technique de coloration et de texturation. Pour la prochaine leçon, nous allons créer un projet en utilisant certaines des techniques que nous avons utilisées dans les leçons. 11. Projet final: Maintenant que toutes les techniques sont terminées, nous allons plonger dans un projet. Donc, pour votre projet, vous allez combiner deux à trois techniques issues des leçons précédentes, soit en utilisant l'un des nombreux exemples de l'une des leçons et y ajoutant une autre technique, soit en élaborant votre propre exemple. Donc, pour mon projet, je vais combiner les ombres et la première technique de texturation, qui consiste à créer mes propres formes. Et je vais créer des papiers aléatoires dispersés à l'écran. Je vais donc, les papiers ne seront pas des rectangles réguliers. Certains d'entre eux seront des papiers déchirés, sachant que le papier est de forme rectangulaire, la plupart du temps, je vais créer une fonction qui a quatre paramètres pour commencer, et je l'appellerai simplement papier. Les quatre paramètres seront donc les mêmes que n'importe quel rectangle. Pour flotter x, flotter y, flotter en largeur et flotter vers la gauche, car je veux qu'une partie du papier soit déchirée du bord inférieur. Je vais créer le papier à l'aide de sommets. Et cela commence toujours par Begin shape et se termine par une forme. Je vais donc commencer par ça. Et puis d'autres sommets. Le premier sera en haut à gauche, et ce sera notre position principale X et Y. Donc, c'est X et Y. Ensuite, nous allons nous déplacer vers la droite, puis vers la gauche, puis nous fermerons la forme. Donc, pour aller à droite, cela signifie que nous allons nous déplacer de la largeur de l'exposition. Nous allons donc ajouter W ou la largeur ici. Faites l'exposition et y va rester le même. Et ensuite, pour le troisième, nous allons rester là où nous en sommes actuellement, sur l'axe X puis sur l'axe Y nous allons ajouter la hauteur parce que nous descendons. Et enfin, je vais revenir à gauche, mais nous sommes tellement Dan, donc sur l'axe X, nous revenons à x, mais sur l'axe Y, nous allons nous en tenir à celui que nous avions auparavant. Et maintenant, colorions ici. Mettons-le à 00, puis faisons un 100 par 100 et 150. Voici donc à quoi ressemble un papier rectangulaire normal. Mais nous voulons ajouter une déchirure au journal pour cela. En me souvenant de la première leçon, je sais que j'ai besoin d'une résolution nombre de points dont je vais avoir besoin pour les tarifs. Et j'ai également besoin d'initialiser les positions de chacun des points pour pouvoir les connecter au premier et au dernier car je vais utiliser des sommets courbes plutôt que des sommets. Et sachant que dès la première leçon, nous aurons besoin de certains points de contrôle avant de voir ce point. Je vais donc créer un tableau vectoriel p. Je vais appeler ça des postes ou des points de vente. Et ensuite, il sera d'une résolution en longueur. Et il doit s'agir d'un entier car cela n'autorisera rien d'autre qu'un entier. Ensuite, je vais avoir besoin de l'espacement entre chacun de ces points. Un peu comme créer une grille. Alors, terminez le cercle. Dans la première leçon, nous devions faire l'angle, mais pour celle-ci, nous allons simplement faire les espaces entre chaque point. Et nous pouvons simplement le faire en créant une variable. Et ce sera la largeur du papier divisée par le flotteur de la résolution. Et nous les convertissons en flotteurs parce que nous voulons une division plus précise. Ensuite, nous allons utiliser une boucle for pour créer ces positions. Donc, l'exposition pour chacun d'entre eux va être, je la multiplie par l'espacement. C'est exactement comme créer une grille. Et la position Y pour celle-ci sera la hauteur. Celui-là. Je vais maintenant créer ces positions en créant une nouvelle instance de la classe vectorielle p et en ajoutant chacune à leur position x et y. Maintenant que c'est initialisé, nous pouvons l'utiliser ici. Cela ira donc dans le même espace que celui-ci. Mais parce que je veux aussi que cela existe, je vais créer une condition si conditionnelle ici. Et je vais vérifier si la résolution est supérieure à 0, puis je veux faire les sommets de courbe. Sinon, je voulais le faire. Donc, si la résolution est égale à 0 , je veux que cela se produise autrement. Et élimine simplement toutes les valeurs négatives que je vais faire autrement, si Raz est supérieur à 0, vous pouvez aussi faire le contraire, mais c'est juste pour éliminer toutes les valeurs négatives. Nous allons maintenant créer une boucle for. Mais parce que nous allons de droite à gauche ici, nous allons passer de la dernière position du tableau à la première position. Et ce sera le cas si j'ai une résolution moins 1. Donc, la position finale dans le tableau pour I, ou la condition sera si je suis plus égal à 0, donc nous allons descendre à 0, puis nous allons décrémenter au lieu d'incrémenter. Cela va juste à l'opposé de notre boucle for normale. Et maintenant, nous allons appeler la méthode du texte rouge de la courbe. Et cela va être la position I point x et ensuite la position que j'ai obtenu y. Donc, obtenir le vecteur p, puis obtenir l'exposition, puis obtenir la position y pour le y. Et maintenant ajoutons le cinquième paramètre ou argument dans notre article méthode. Et essayons 0 juste pour nous assurer que tout fonctionne bien. Et puis essayons cinq aussi avant de continuer en forme parce que nous n'avons pas fermé la forme, nous pouvons simplement appeler des vêtements. Et ça va passer du dernier point au premier. Et maintenant, vous verrez qu'il est en train de fermer. Mais nous avons un problème ici parce que nous n' avons pas de sommet courbe à la fin ici qui se connecte à celui-ci. Je vais juste appeler le sommet courbé ici à la fin. Et ce sera la position 0, x et y. Et maintenant, nous avons un rectangle. La raison pour laquelle nous n'en avons pas besoin avant celui-ci ici, comme nous l'avons fait avec le cercle, c'est parce que nous avons déjà des sommets avant lui. Ainsi, le compte de B, ou celui-ci compte spécifiquement comme l'autre point de contrôle pour le sommet actuel ou le point de contrôle précédent pour le premier sommet de courbe ici. Maintenant, pour voir que nous avons plusieurs points ici, vous pouvez soit modifier la couleur des sommets ici, soit ajouter un décalage Y et le faire ici. Le décalage Y va donc être une valeur aléatoire allant de deux à deux négatifs. Et ensuite, nous l'ajouterons à celui-ci. Maintenant, si je l'augmente à 15, j'en verrai plus. Je veux faire quelque chose d'un peu plus chic. Et c'est ajouter une onde sinusoïdale aux décalages Y. En plus de la randomisation. Pour cela, je vais ajouter deux variables que vous utilisez habituellement avec n'importe quelle onde sinusoïdale, et c'est la fréquence. Et je vais lui donner une valeur de 100, puis une amplitude. Et je vais donner à cela une valeur de cinq. Et puis, en plus de cela, nous faisons une onde sinusoïdale. Parce que je veux que la vague passe au bas de la page. Je vais le multiplier par la fréquence de l'angle. Et ensuite, je vais multiplier cela par l'amplitude. Et vous n'avez pas besoin de mettre cela entre parenthèses car la multiplication se produira avant tout ajout. Il y a donc une hiérarchie ici selon laquelle nous n'avons pas besoin de parenthèses quatre. Et maintenant, si je fais ça, nous devrions avoir une onde sinusoïdale. Donc, si je réduis ça à cinq, on obtient une onde sinusoïdale. Si je l'augmente à 115, cela à 200, puis je l'augmente à 15. Maintenant, nous pouvons voir l'onde sinusoïdale un peu mieux. Maintenant, si vous voulez que l'amplitude soit plus élevée, vous pouvez simplement l'augmenter. Et l'amplitude est essentiellement la hauteur de chacune des vagues. Et puis la fréquence est la fréquence de l'onde. Donc, si nous l'avons à 200 ans, nous aurons plus de vagues. Et si nous l'avons à 50 ans, il y aura moins de vagues. Je vais le garder à des centaines et ça à cinq heures. Et notre papier ressemble à du papier dessiné. Ajoutons maintenant plus de papier et le randomisons sur l'écran. Donc, je ne pourrais tout simplement pas entrer dans une boucle. Et je vais initialiser le compte des positions. Je vais les rendre aléatoires de 0 à la largeur, puis aléatoires de 0 à la hauteur. Si je fais ça, ça va être un gâchis parce que nous avons également oublié d'ajouter x et y à ces positions. Vous pouvez donc soit ajouter ici plus x, soit vous pouvez ajouter ici. Et ça va ajouter y. Et maintenant, si je fais ça, ça devrait parfaitement fonctionner. Maintenant, pour l'ombre, je vais encore ajouter tout ça. Mais avec un décalage, vous pouvez créer une fonction pour créer la forme papier, puis l'ombre correspondante. Mais je vais le faire à l'intérieur de mes méthodes papier. Et comme nous le savons, l'ombre doit passer en premier, car quelle que soit la première étape, elle sera en dessous du code qui vient après. Donc ça va être l'ombre et je vais la compenser en utilisant push and pop. Et puis en utilisant les méthodes de traduction, certaines isolent le mouvement pour celui-ci ou la traduction pour celle-ci. Et puis je traduirai et nous ferons un décalage x et un décalage y. Faisons donc 33. Et puis aussi, la raison pour laquelle vous utilisez le persan ne pas pousser la matrice est parce que cela me permet de pousser les styles et la traduction ou la transformation. Et ensuite, je vais ajouter le remplissage. Donc, pour l'ombre, le remplissage sera de cette couleur. Et puis mon journal devient blanc. Maintenant, si je fais ça, nous devrions voir une ombre se former. Et puis, ici, je ferai NoStroke pour tous. De plus, l'ombre rend le papier visible à l'arrière-plan, ou augmente en quelque sorte le contraste entre les deux. Si votre arrière-plan est de couleur claire comme le mien, mais si vous souhaitez utiliser un trait , n'hésitez pas à le faire. Bien sûr. J'ai aussi ajouté de la couleur ici. Si vous le souhaitez, si vous voulez ajouter des couleurs différentes pour le papier, je ne vais pas l'utiliser. Je voulais juste vous montrer que vous pouvez le faire si vous le souhaitez. Et puis j'ai ajouté un tableau pour un texte de couleurs si vous voulez le randomiser également. J'ajouterai donc une autre couleur à cela plus tard. Nous pouvons donc voir que vous pouvez aléatoirement la couleur du texte. Nous pouvons également classer aléatoirement la hauteur du papier. Je vais appeler ça la hauteur du papier, et nous l'ajouterons ici. La hauteur du papier va donc être une valeur aléatoire et je vais passer de 180 à 30. Et la largeur que je vais rester fixe à 150. Maintenant, lançons ça. Et parce que nous dessinons les papiers du coin supérieur gauche, nous ne les verrons pas passer par le haut à gauche, mais nous allons les voir aller vers la droite ou vers le bas. Donc, pour éliminer cela, je vais retirer la largeur du papier d'ici et la hauteur du papier d'ici. Je vais donc changer cela en largeur de papier. C'est une bonne pratique si vous commencez à voir des choses répéter pour créer simplement une variable pour eux ou une fonction. Et pour cela, la largeur du papier sera égale à 150. Et maintenant, ils ne devraient pas sortir des limites. Créons maintenant le texte à l'intérieur des journaux. Pour cela, je vais créer une méthode appelée texte. Et il va y avoir un certain nombre de lignes. Et j'ai déjà esquissé tous ces éléments afin de savoir quels paramètres j'ai besoin. Alanine un certain nombre de lignes parce que je l'ai randomisé. Ensuite, j'aurai également besoin d'une exposition parce que je veux savoir où ça commence dans mon journal. Ensuite, j'aurai besoin d'un poste Y. Et bien sûr, il va falloir une largeur et une hauteur pour chacune des lignes. Enfin, je vais avoir besoin de marges latérales et de marges supérieures. Et la raison pour laquelle je les sépare, parce que parfois on voit que les marges supérieures sont un peu plus grandes et quelques cahiers. Je vais donc avoir une marge latérale puis une marge supérieure. Et je les remplis avec les couleurs ici. J'ai donc créé un autre tableau que j'appelle des couleurs de texte. Il n'avait qu'une seule couleur auparavant, mais maintenant j'ai copié tout ce qui était ici. Nous n'en avons plus besoin, mais si vous souhaitez également avoir des couleurs différentes pour le papier, vous pouvez ajouter des couleurs plus profondes. Mais je vais randomiser et juste les couleurs du texte. Et je vais supprimer la couleur d'arrière-plan car c'est la même chose. Nous n'avons donc pas quelque chose ou un papier comme il a été découpé. Donc, je vais juste avoir ces couleurs. Et la plupart de ces couleurs sont identiques à celles que nous avons utilisées auparavant. Vous pouvez également mettre en pause et copier ces couleurs. En revenant ici, je vais aléatoirement les couleurs du texte. Chaque papier a donc un texte de couleur différente. Et pour cela, je vais utiliser exactement ce que j'ai utilisé auparavant avec la randomisation. Donc, il ne sera que l'indice aléatoire. Et il doit s'agir d'un entier car aléatoire produit un float et cela va de 0 à la dernière position du tableau, car nous allons avoir un tas de lignes. Cela va ressembler à la création de lignes à l'intérieur d'une grille. Nous allons donc créer une boucle qui va de 0 au nombre de lignes. Parce que c'est seulement apparu. Nous allons simplement créer une variable que je vais appeler la hauteur du texte. Et ce sera que je le multiplierai par la hauteur que je lui donnerais. Donc, la hauteur de chaque ligne. Et ils vont simplement dessiner un rectangle. Le rectangle va donc passer de la marge latérale x plus. C'est donc un peu comme pousser par la marge latérale que j' initialise ou que je vais initialiser ici avec un argument. Et puis pour y, ce sera y plus la hauteur des textes plus la marge supérieure. Nous allons donc pousser chacun d'entre eux par la hauteur du texte. Et ça va être différent à chaque fois parce qu'il est multiplié par le I. Et puis la marge supérieure sera la même, donc elle va tout faire baisser. Et puis la marge latérale largeur moins multipliée par deux, parce que nous la poussons par une marge latérale, nous allons devoir soustraire deux marges latérales de ce côté parce qu'elle va être poussée par une. Et enfin, il va y avoir une hauteur qui va être spécifiée ici. Et repoussons la largeur et la hauteur vers le bas pour que le code soit beaucoup plus propre et plus facile à lire. Maintenant, je vais l'appeler à l'intérieur des méthodes papier. Et je vais lui donner cinq lignes. Je ne vais donc pas le faire aléatoirement au début. Vous pouvez donc voir s'il y a des problèmes. Ensuite, il va prendre la même exposition que le papier, la même position y que le papier, même largeur que le papier. Et ensuite, il aura une hauteur spécifique. Je vais donc en faire cinq. Et pour la marge latérale, je vais faire 10. Et puis, pour la marge supérieure, je vais faire 30. Maintenant, si je l'exécute, nous allons voir un léger problème dans notre code. Et c'est qu'il n'y a pas d'interligne. n'y a donc pas d'espacement entre les lignes. C'est généralement qu'ils sont en texte réel. Il va donc falloir multiplier la hauteur du texte ici par deux. garantira que nous disposons d'une hauteur de texte, puis d'un espace entre chacune des lignes équivalant à la hauteur du texte. Vous pouvez également créer un interligne différent de la hauteur du texte que vous pouvez spécifier. Vous pouvez l'ajouter aux paramètres ici. Si vous ne souhaitez pas qu'il ait le même interligne que la hauteur du texte. Mais je vais garder la même chose. Et maintenant, si je l'exécute, nous allons voir un meilleur texte. Mais je pense que ça aura l'air plus beau si je fais ça au hasard. Donc, parce que nous avons un entier, nous allons devoir le transformer en entier et m en faire un nombre aléatoire de deux à sept, disons. Et maintenant, c'est un peu plus réaliste. Je veux dire, c'est toujours très graphique et pas réaliste. Mais je pense que si vous randomisez quelque chose comme ça, ça aura l'air plus beau. Et je vais également réduire le nombre de papiers ici. Ensuite, j'ajouterai une rotation au journal. Habituellement, si vous voyez une pile de papier sur le sol ou sur une table, elle n'aura pas la même rotation. Je vais donc le faire en utilisant Push and Pop pour une transformation. Donc je vais simplement pousser et vous pouvez faire matrice de poussée parce que nous n'allons pas faire de styles ici. Et puis je vais aussi nettoyer ça et ensuite j'ajouterai la méthode pop. Et ensuite, ici, je vais d'abord traduire. Et je vais traduire ces positions. Cela va donc être 0, 0. Maintenant, nous pouvons le ramener. Et la raison pour laquelle je traduis est que rotation va tourner à partir du coin de la page. Et si je ne traduis pas pour chacun des papiers, il va tourner à partir du point zéro du canevas. Donc, ce que je fais ici, que je pousse la toile au coin du papier. Donc, lorsque je tourne, je vais faire pivoter le papier à partir de ce moment. Maintenant, si je fais une rotation et que je ferai une rotation aléatoire à partir d'un quart de pi négatif. Vrai quart de pi. Parce que, parce que je n'ai pas besoin d'autant de rotation, vous pouvez également effectuer une rotation complète si vous le souhaitez. Alors, lançons ça et voyons ce qui se passe. Maintenant, il a l'air plus naturel. Donc, même si j'en ai 10, il n'aura pas l'air trop bondé. Enfin, je vais randomiser le type de papiers que je dois faire. Je ne veux pas qu'ils soient tous victimes de terrorisme. Je veux que certains d'entre eux soient vierges. Je vais donc créer un nombre aléatoire qui n'a que deux états. On va donc l'être si r est supérieur à 0,5. Il y aura donc 50 % de chances que chaque type de papier apparaisse. Et celui-ci va être le même, mais avec une résolution de 0. Et maintenant, j'ai du papier plein et du papier déchiré, et c'est à peu près tout. J'ai utilisé les techniques que nous avons apprises dans les leçons. L'une consiste à ajouter de la texture à vos formes et l'autre ajoute des ombres pour plus de profondeur. C'est maintenant à vous de créer votre propre projet. Choisissez deux à trois techniques pour créer l'un des exemples que nous avons créés dans n'importe laquelle des leçons ou pour réaliser vos propres projets comme je l'ai fait ici. Vous n'avez pas besoin d'utiliser une seule technique de coloration et une technique de texture. Mais si c'est ce que vous voulez faire, s'il vous plaît, faites-le. Mais n'hésitez pas à choisir n'importe lequel d'entre eux pour pouvoir faire une technique extrême douce ou même trois techniques de coloration à la fin. Dans cet exemple, si je voulais ajouter une autre technique de coloration, j'ajouterais les masques et je prendrais une image papier ou une texture papier et j'ajouterais à chacun des papiers. De cette façon, vous pouvez avoir une couleur différente pour les papiers du blanc avec un peu de texture. Ainsi, dans la technique de coloration des masques, nous avions l'habitude de pointer les graphiques, l' un pour le masque et l'autre pour les formes. Mais pour cet exemple, si je voulais ajouter une texture de papier , le masque sera le graphique P dans la forme ou tout ce qui va être massé sera du papier ou la texture que vous allez charger comme une image dans vos projets. Si vous souhaitez suivre ce projet pour votre projet final, vous aurez peur de le faire, mais je vous recommande d'y ajouter une autre dimension. Une autre chose que j'aurais pu ajouter à ce projet est des éléments d'arrière-plan, comme une grille, par exemple, pour créer un sol carrelé. Vous pouvez également ajouter une image d'arrière-plan de parquet ou de n'importe quelle table de texture. Et vous pouvez définitivement colorer cela avec n'importe quelle technique de codage. Peut-être pas la coloration par arrière-plan, mais si vous voulez avoir des termes différents pour le papier, vous pouvez peut-être utiliser les méthodes d'interpolation des couleurs avec une certaine randomisation comme nous l'avons fait dans la première technique de coloration. Ou vous pouvez faire de la coloration par distance pour peut-être donner des différences tonales dans la couleur du papier, mais pas nécessairement avec une interpolation de couleur aléatoire, une sorte de mimitation de la lumière du soleil qui pénètre dans la pièce et coloriez certains papiers de différents couleur. Et bien sûr, tous ces éléments ne sont pas très réalistes, mais c'est tout de même quelque chose à ajouter à vos œuvres d'art. Enfin, si vous avez des questions concernant cette leçon ou l'une des autres leçons, veuillez me le faire savoir dans la discussion ci-dessous. Sinon, j'ai hâte de voir vos projets. Merci beaucoup d'avoir suivi ce cours, et je vous verrai dans un autre cours.