Définition | Utilisation | Exemple | Côté technique |
Pour faire des remplissages par diffusion, on met le premier point dans une pile. Le remplissage
proprement dit consiste à: Cela consomme beaucoup trop d'espace de stockage interne. On peu diminuer la taille du stockage interne par
différents moyens. Ceux que j'ai utilisés sont: Par défaut la pile est de 32 points mémorisés, cela doit suffire grandement à la plupart des cas. En gros pour remplir un rectangle ou un cercle, il suffit de 2 points. Pour changer le fond d'écran, si il y a N objets, il faut environ N points à mémoriser.
Si le dessin est trop complexe, il n'y a pas la possibilité de stocker tous les points dans la pile.
Certains sont "oubliés" et le remplissage sera partiel, il y aura des parties intactes. Pour palier à ce défaut,
on peut augmenter la taille de la pile. Dans le fichier PecheuxGraph.h de la bibliothèque, dans les premières
lignes, changez la taille de la pile. Par défaut il y a:
PecheuxGraph.zip\PecheuxGraph\examples\Documentation\Exemple-204-fillCrash\Exemple-204-fillCrash.ino (dans votre fichier téléchargé):
// Ce programme montre que si on a trop d'obstacles, fill() ne peut plus tout
// mémoriser et certaines zones ne sont pas remplies. On trace des lignes verticales
// qui ne vont pas jusqu'au bord, puis on remplit l'écran. Pour avoir quelque chose
// de différent à chaque fois, on initialise le générateur aléatoire avec un temps de
// réaction humain
#include <PecheuxGraph.h>
void setup()
{
setGraphMode(PAYSAGE); // Obligatoire pour utiliser l'afficheur
// Initialisation d'un vrai générateur pseudoaléatoire
text("Appuyez sur l'écran"); // Information pour ne pas mettre un écran noir
while(!isTouch()); // On attend un temps variable
randomSeed(micros()); // Initialisation avec une valeur qui ne sera jamais la même
clrscr(); // Suppression du message
for (int Nb=0; Nb<50; Nb++) // 50 lignes, à changer pour faire le test
// Obstacles n'allant pas jusquau bord:
vLine(random(LARGEUR-2)+1, random(HAUTEUR-2)+1, random(HAUTEUR-2)+1, GREEN);
fill(0, 0, GREEN); // Remplit l'écran, complètement si la pile est suffisante
}
void loop()
{
}
Avec 40 lignes verticales cela passe souvent. Voici le dessin avant le remplissage: Et après: Avec 50 lignes verticales, voici le dessin avant le remplissage: Et après! Cela ne passe plus, on a perdu des point de départ parce qu'il y en avait trop, et certaines zones ont été oubliées. Il y a des "trous": Si l'on veut mette plus d'objets, il faut donc augmenter la taille de la pile. |