Algorithme de la maison dans le programme Idol. Travaux pratiques "Executor Draftsman. Algorithmes auxiliaires". Algorithmes d'assistance avec arguments

Travaux pratiques« Dessinateur exécuteur testamentaire. Utilisation d'algorithmes d'assistance avec des arguments"

Tâche A L'algorithme auxiliaire dont nous avons besoin (qui dessine un carré d'une certaine longueur) peut s'écrire comme suit :

algue carré( arg chose un)
de bonne heure
. baisser le stylo
. décalage par vecteur(0,a)
. décalage par vecteur(a,0)
. décalage par vecteur(0,-a)
. décalage par vecteur(-a,0)
. lever la plume
con

Exercice 1 : Créer une courbe à partir de ces points

Cela rendra notre algorithme plus flexible et élégant.

Faites un clic droit dessus, sélectionnez ? Une fois que vous avez plusieurs points dans la liste, cochez le second dans la liste et modifiez ses coordonnées. Nous faisons la même chose avec d'autres moments. Ainsi, nous avons créé des points paramétriques. Nous le déposons sur la toile et le connectons avec des points.

L'ordre dans lequel vous les avez entrés précédemment affecte l'ordre dans lequel ils sont attachés. Dans mon image, vous pouvez voir que la courbe est une courbe fermée, alors à quoi sert le clic droit sur le paramètre ? Vous pouvez maintenant expérimenter les options du panneau fonctionnel principal, par exemple, sélectionner un point ? et cliquez sur "Désactiver l'aperçu".

Record " algue carré( arg chose a)" signifie que l'algorithme "carré" a un argument (arg) "a", qui peut être un nombre réel (réel) arbitraire. Pour appeler cet algorithme, vous devez écrire, par exemple, "carré (2)" - nous obtenons un carré de côté 2 ou "carré (3)" - nous obtenons un carré de côté 3, etc. Une valeur spécifique "a" ne recevra que pendant l'exécution du programme pendant l'algorithme auxiliaire correspondant. Et partout au lieu de "a", ce nombre sera remplacé par l'ordinateur.

Exercice 2 : Introduction aux listes de données

Avec des objets complexes, 90% du temps de tri ? Listons les données afin que le résultat final corresponde à ce que nous attendions, en optimisant l'algorithme afin qu'il consomme le moins de puissance CPU possible. Avec des centaines voire des milliers d'objets en place, nous devons contrôler ce que voit le Grasspopper.

Nous faisons également la même chose avec le deuxième composant, en désignant cinq points sur la deuxième ligne. Mettons-nous en place le composant toile du Grasshopper ? ; puis nous connectons l'entrée? avec la première version? et l'entrée ? avec la deuxième sortie? Ainsi, nous avons cinq lignes, mais deux de ces lignes sont connectées au dernier point de la première ligne.

  • Nous plaçons deux composants sur la toile.
  • Vous ne jouez pas ?
En plus de? Références croisées? Il existe d'autres options.

Le programme pour dessiner cette image peut ressembler à ceci:

utiliser le tiroir
algue carrés
de bonne heure
. passer à un point(1,1)
. carré(2)
. passer à un point(4,1)
. carré(3)
. passer à un point(8,1)
. carré(4)
. passer à un point(13,1)
. carré(5)
. passer à un point(0,0)
con
algue carré( arg chose un)
de bonne heure
. baisser le stylo
. décalage par vecteur(0,a)
. décalage par vecteur(a,0)
. décalage par vecteur(0,-a)
. décalage par vecteur(-a,0)
. lever la plume
con

Tâche B Apprenons au dessinateur de nouvelles commandes. Appelons l'une des commandes " ligne(arg th x1,y1,x2,y2)» – pour tracer une ligne du point (x1,y1) au point (x2,y2).

algue doubler( arg chose x1, y1, x2, y2)
de bonne heure
. passer à un point(x1,y1)
. baisser le stylo
. passer à un point(x2,y2)
. lever la plume
con

Tâche B Appelons la seconde commande " rectangle(arg th x1,y1,x2,y2)' pour dessiner un rectangle. Le point (x1,y1) est un point de la diagonale AC du rectangle, le point (x2,y2) est l'opposé. Avant d'écrire l'algorithme, vous devez comprendre quelles sont les coordonnées des deux autres points.

Un algorithme d'assistance pourrait ressembler à ceci :

algue rectangle( arg chose x1, y1, x2, y2)
de bonne heure
. passer à un point(x1,y1)
. baisser le stylo
. passer à un point(x2,y1)
. passer à un point(x2,y2)
. passer à un point(x1,y2)
. passer à un point(x1,y1)
. lever la plume
con

Tâche G Maintenant, en utilisant ces commandes, nous allons dessiner une maison :


utiliser le tiroir
algue maison
de bonne heure
. rectangle(2,1,8,5)
. rectangle(3,2,5,4)
. rectangle(6,1,7,4)
. ligne(1,4,5,8)
. ligne(5,8,9,4)
con
algue doubler( arg chose x1, y1, x2, y2)
de bonne heure
. passer à un point(x1,y1)
. baisser le stylo
. passer à un point(x2,y2)
. lever la plume
con
algue rectangle( arg chose x1, y1, x2, y2)
de bonne heure
. passer à un point(x1,y1)
. baisser le stylo
. passer à un point(x2,y1)
. passer à un point(x2,y2)
. passer à un point(x1,y2)
. passer à un point(x1,y1)
. lever la plume
con

Remarque : bien sûr, en plus de ces commandes, nous pouvons utiliser les commandes standard du dessinateur (se déplacer vers un point, se déplacer vers un vecteur...).

Tâche D Dessinez vous-même ce que le Drawer va dessiner en exécutant l'algorithme :

utiliser le tiroir
algue spirale
de bonne heure
. passer à un point(3,3)
. baisser le stylo
. bobine(1); bobine(3); bobine(5); bobine(7); bobine (9)
. lever la plume
con
algue bobine( arg chose un)
de bonne heure
. décalage par vecteur(un, 0)
. décalage par vecteur(0, -a)
. décalage par vecteur(-a-1.0)
. décalage par vecteur(0, a+1)
con.