Source: Scratch Wiki en français
Cette catégorie traite des mouvements sur Scratch.
Description
Une bonne partie d'un projet scratch est visuelle et, souvent, est basée sur le mouvement.
Vous trouverez dans cette catégorie toutes les pages liées au mouvement sur Scratch.
Les Mouvements
Un mouvement est le fait d'effectuer une transformation (symétrie, rotation, translation, …) mathématique sur un objet numérique.
Il y a deux types de mouvements sur Scratch : les déplacements et les rotations.
Bien sûr, les deux peuvent être combinés. Chaque mouvement est constitué de différentes transformations :
- Pour les déplacements
- Déplacement manuel (pour lequel on ne peut pas insérer un programme dans le même empilement)
- Déplacement à vitesse constante
- Déplacement à vitesse variable
- Pour les rotations
- Rotation manuelle (pour laquelle on ne peut pas insérer un programme dans le même empilement)
- Rotation à vitesse constante
- Rotation à vitesse variable
Cependant, il est impossible d'exécuter différentes versions du même mouvement en même temps et dans un même empilement de bloc.
Mouvements et coordonnées
Lors d'un déplacement, les coordonnées du sprite changent. Les coordonnées d'un sprite sont stockées dans les blocs dédiés (abscisse x
et ordonnée y
).
Mouvements et rotations
Lord d'une rotation, la direction du sprite change. La direction est stocké dans le bloc direction
.
Le cas des blocs glisser en () secondes à x:() y:()
& glisser en () secondes à ( v)
Les blocs :
produisent des mouvements direct. Et oui, on ne peut pas placer de programme pendant l’exécution du bloc, du moins pas directement.
Quelques exemples de code pour réaliser ces différents mouvements. Il y a bien sûr plusieurs possibilités.
Réaliser un mouvement direct
Déplacement
quand @greenFlag est cliqué aller à x:(0) y:(0)
Rotation
quand @greenFlag est cliqué s'orienter à (90)
Réaliser un mouvement glissé
Déplacement
répéter (10) fois { avancer de (10) pas }@loopArrow::control
Rotation
répéter (10) fois { tourner @turnRight de (10) degrés }@loopArrow::control
Réaliser un mouvement factoriel
Déplacement
répéter jusqu'à ce que <(abscisse x) = (200)> ajouter (((200) - (abscisse x)) * (0.1)) à x
Pour faire une vague sur une courbe de sin
répéter indéfiniment mettre y à ((([sin v] de (chronomètre)) * (80)) modulo (360))
Rotation
répéter jusqu'à ce que <(direction) = (-90)> tourner @turnRight de (((-90) - (direction)) * (0.1)) degrés
Représenter un mouvement avec une fonction
Il est possible de suivre la distance parcourue / différence de degrés entre chaque étape du mouvement et la nouvelle position / nouvelle direction avec des fonctions mathématiques.
Courbe de distance / différence ou courbe de position / direction ?
En fonction du bloc que vous utilisez, vous obtiendrez une courbe différente :
- Les blocs qui mettent, s'orientent une donnée donneront une courbe de position / direction ; Exemple :
- Les blocs qui ajoutent, tournent une donnée donneront une courbe de distance / différence ; Exemple :
Projet dédié
Guide d'utilisation
- Lancez le projet, puis, utilisez le bouton menu (maison) ;
- Sélectionnez GRAPH, puis entrez, en fonction de ce que vous voulez suivre, la fonction voulue ;
- Appuyez sur entrée (retour) pour afficher la courbe.
Trouver la bonne fonction
Pour représenter un mouvement par une courbe, il suffit de lui associer une fonction, ainsi,
répéter jusqu'à ce que <(abscisse x) = (200)> ajouter (((200) - (abscisse x)) * (0.1)) à x
devient ƒ(x) = (200 - x) * 0.1, ce qui permet de tracer la courbe du mouvement, ou plus précisément ici, la distance parcourue à chaque étape du mouvement vu que ce mouvement est factoriel.
Le plus dur ici est de trouver la fonction. Elle est en fait la même que celle que vous entrez sur Scratch.
Exemple de courbe de fonction - Trouver le type de mouvement avec la courbe
On cherche à réaliser la courbe de position du script :
mettre x à ((((200) - (abscisse x)) * ([sin v] de (abscisse x))) * (20))
La fonction est la même que le calcul : (200 - abscisse x) * (sin de abscisse x) * 20. On a alors le résultat :
On peut lire sur une courbe si le mouvement est factoriel, direct ou glissé (voir partie suivante).
Ici, on a la position et non la distance réalisée, puisque le bloc est mettre x à ()
et non ajouter () à x
.
Courbes des mouvements
Courbe de position et de distance d'un mouvement Direct
La fonction est constitué d'un seul paramètre par coordonné : la position finale. La courbe est à son maximum à 1, et revient à zéro pour toutes les autres valeurs (ce sont des valeurs interdites).
Notre projet ne permet pas de réaliser une telle fonction, car la fonction ici serait en fait du code :
si x = 1 alors
qui est ici une fonction logique.
La courbe est la même pour la courbe de position et la courbe de distance (parcourue).
mettre la valeur de la courbe à position
sinon
valeur interdite
Courbe de position et de distance d'un mouvement Glissé
- La courbe est constante (une ligne droite parallèle à l'axe des abscisses), mais il n'y a pas de valeurs interdites. Il n'y a pas de variations, la fonction est égale à ƒ(x) = valeur étape s'il s'agit d'une courbe de distance.
- La courbe est linéaire, il s'agit alors d'une courbe de position. On a alors f(x) = étape * x + (abscisse x au début).
Courbe de position et de distance d'un mouvement Factoriel
La courbe peut être linéaire, hyperbolique ou polynomiale (du troisième degré). Il est impossible de vous donner la fonction du mouvement factoriel puisque ce dernier dépend déjà de là fonction que vous avez entré. Toutefois, la courbe de position sera égale à g(x) = f(x) et la courbe de distance peut être obtenue en faisant la différence de deux position apposées, dans l'ordre de l'éloignement à zéro (la valeur avec la plus grande distance à zéro est soustraite à l'autre), ce qui permet d'obtenir 2 points de la courbe.
Suivre un mouvement avec le stylo
Il est possible de suivre les mouvements réalisés par un sprite avec le stylo.
Commençons par définir une très petite taille de stylo, pour bien voir les détails.
quand @greenFlag est cliqué mettre la taille du stylo à (1)
Script nécessaire - Ne l'oubliez pas !
définir Suivre Orientation mettre la couleur du stylo à [#ff5050] // rouge pour une rotation stylo en position d'écriture avancer de (10) pas avancer de (-10) pas relever le stylo
Suivre un mouvement direct
Déplacement
mettre la couleur du stylo à [#5050ff] // bleu pour un déplacement stylo en position d'écriture aller à x:(0) y:(0) relever le stylo
Rotation
Suivre Orientation::custom s'orienter à (90) Suivre Orientation::custom
Suivre un mouvement glissé
Déplacement
mettre la couleur du stylo à [#5050ff] // bleu pour un déplacement répéter (10) fois { stylo en position d'écriture relever le stylo avancer de (10) pas }@loopArrow::control
Rotation
répéter (10) fois { Suivre Orientation::custom tourner @turnRight de (10) degrés Suivre Orientation::custom }@loopArrow::control
Suivre un mouvement factoriel
Déplacement
mettre la couleur du stylo à [#5050ff] // bleu pour un déplacement répéter jusqu'à ce que <(abscisse x) = (200)> stylo en position d'écriture relever le stylo ajouter (((200) - (abscisse x)) * (0.1)) à x
Rotation
répéter jusqu'à ce que <(direction) = (-90)> Suivre Orientation::custom tourner @turnRight de (((-90) - (direction)) * (0.1)) degrés Suivre Orientation::custom
Vous pouvez désormais suivre tous les types de mouvement, avec les mêmes exemples que ci-dessus.
Pour finir
Vous venez de terminer un long et complexe tutoriel et page d'information du wiki Scratch francophone ! Retrouvez la liste des tutoriels ici.
Voir aussi
- Les mouvements ont lieu dans la Scène.
- Les mouvements sont générés par les Blocs de Mouvement.
- On peut suivre les mouvements grâce au Stylo.
Pages dans la catégorie « Mouvement »
Cette catégorie comprend 2 pages, dont les 2 ci-dessous.
Média dans la catégorie « Mouvement »
Cette catégorie comprend 6 fichiers, dont les 6 ci-dessous.
- Courbe de sin - Mouvement factoriel.png 3 380 × 2 534 ; 267 kio
- Courbe exemple - Mouvement factoriel.png 3 380 × 2 534 ; 363 kio
- Courbe linéaire - Mouvement factoriel.png 3 384 × 1 508 ; 116 kio
- Mouvement.gif 256 × 329 ; 190 kio