Discuss Scratch

Ceo_
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

En complément à tous ce qui a été dit plus haut, le sin (seul fonction que j'utilise) a une utilisé dans l'animation: il permet de créer un mouvement de va-et-vient, par je ne sais quelle sorcellerie ! (Je n'ai pas encore fait la trigonométrie non plus )

quand le drapeau vert pressé // Ce script sert de "timer". On pourrait aussi utiliser le chronomètre, mais personnellement je préfère cette méthode.
mettre [Temps v] à [0]
répéter indéfiniment
ajouter à [Temps v] (1)
end

quand le drapeau vert pressé
aller à x: (-28.5) y: (0) // Pour que le mouvement soit centré
répéter indéfiniment
ajouter ([sin v] de ((Temps) * (2))) à x
end

En faisant un script comme cela, le lutin fera un mouvement de va-et-vient de -28.5 à 28.5.

SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Alors, parce que ça me titille depuis le début de ce post, voilà comment on définit les fonctions trigonométriques !

Petite introduction : trigonométrie, ça vient du grec, ça veut dire mesures du triangle. C'est bien moins violent que ce qu'on peut penser.
Les bases de la trigonométrie sont simples, et il n'y a aucune raison d'en avoir peur. (Par contre, pour ceux qui voudront poursuivre des études de mathématiques post-bac, ils vont apprendre à détester toutes les relations à apprendre par cœur (ou à redémontrer, mais c'est plus lent…)).

Bref, pour introduire nos fonctions, nous avons besoin d'un triangle rectangle et d'un angle de celui-ci (pas l'angle droit, idéalement). En voici un bel exemple :


On remarquera que les côtés ont de jolis noms savants : hypoténuse pour celui qui ne touche pas l'angle droit, adjacent pour celui qui touche l'angle qui nous intéresse et opposé pour le dernier côté.

Maintenant que les présentations sont faites, entrons dans le vif du sujet :

Les triangles rectangles sont des sujets passionnants pour les mathématiciens parce qu'ils fourmillent de propriétés sympathiques.
Une que tout le monde ou presque connaît est le théorème de Pythagore : le carré de l'hypoténuse est égal à la somme des carrés des deux autres côtés. C'est beau, c'est puissant, mais ici ça ne nous sert à rien. (Par contre ça va permettre d'utiliser la fonction racine de scratch assez souvent dès qu'on fait de la géométrie..).

Une autre, tout aussi puissante bien que souvent oubliée, c'est que l'hypoténuse d'un triangle rectangle est le diamètre de son cercle circonscrit. Dit comme ça, ça fait assez barbare, mais en fait ça veut juste dire que si on place un compas au milieu de l'hypoténuse (qui je le rappelle est le côté qui ne touche pas l'angle droit, donc aussi d'après Pythagore le plus long, faut suivre), tous les sommets du triangle se trouvent alors sur le cercle de rayon la moitié de l'hypoténuse :


Tout ça, c'est bien mignon, mais ça ne me dit pas ce que sont sinus, cosinus, tangente, arcsinus, cotangente et toute la smala, me direz-vous. Vous avez raison, j'y viens.

Les fonctions sin, cos et tan :

Il se trouve que dans un triangle rectangle, grâce à toutes les propriétés particulières qu'il possède, on en sait BEAUCOUP sur lui avec peu de choses.
Et notamment, qu'en fait connaître deux longueurs suffisent pour le connaître entièrement : en effet, on retrouve la troisième grâce à Pythagore. Et si je vous donne trois longueurs d'un triangle, vous savez le tracer (si, si, avec un compas ! (et en plus, s'il est rectangle, il suffit juste d'une équerre…)).

Et donc,si je le connais entièrement, je connais ses angles.
C'est donc de là que viennent nos fameuses fonctions : les anciens (arabes surtout, c'étaient des tueurs en maths, encore plus que les grecs) ont trouvé des tas de relations entre longueurs et angles. Les voici (mais je remets le triangle de départ, ça va aider) :


  • Le cosinus de l'angle  est égale à la longueur du côté adjacent divisée par la longueur de l'hypoténuse.
  • Le sinus de l'angle  est égale à la longueur du côté opposé divisée par la longueur de l'hypoténuse.
  • La tangente de l'angle  est égale à la longueur du côté opposé divisée par la longueur du côté adjacent.


Moyen mnémotechnique (ça veut dire “qui aide à se souvenir”) : si je prends la première lettre de chaque mot important :
C = Cosinus
S = Sinus
T = Tangente
H = Hypoténuse
A = côté Adjacent
O = côté Opposé

on peut construire le “mot” CAHSOHTOA (qui se prononce presque comme “casse-toi”, d'où la facilité à le retenir), et qui veut dire, par groupes de 3 lettres :
  • CAH : Cosinus = Adjacent / Hypoténuse
  • SOH : Sinus = Opposé / Hypoténuse
  • TOA : Tangente = Opposé / Adjacent

Avec ça, si je connais les longueurs des côtés d'un triangle rectangle, je connais certaines valeurs des fonctions sinus, cosinus et tangente.
C'est comme ça que les anciens, en mesurant les côtés de BEAUCOUP de triangles rectangles différents et en faisant les divisions données au-dessus, ont pu remplir des tables de valeurs des fonctions sinus, cosinus et tangente qu'ils venaient de créer. (Oui, parce que pour connaître la “vraie” définition mathématique de ces fonctions, il faut utiliser des exponentielles de nombres complexes - ce qui maintenant se voit au plus tôt en terminale S, mais on s'en fiche, on n'en a pas besoin).

Et donc, maintenant que j'ai ces valeurs, je peux faire BEAUCOUP plus : les retourner, notamment !

Les fonctions réciproques (asin, acos, atan) :

En effet, les fonctions arcsinus, arccosinus et arctangente (sur scratch : asin, acos, atan) permettent de retrouver la division qui avait donné la valeur du sinus, du cosinus ou de la tangente.

Avec tout ce beau matériel, on peut en fait définir un triangle rectangle avec 2 longueurs, comme avant, mais aussi avec 2 angles ou un angle et une longueur. Ça suffit complètement !

Par exemple : si je sais que mon triangle rectangle a une hypoténuse de 5 et un angle  de 60 degré, alors le côté adjacent à cet angle vérifie :
cos(Â) = adjacent / hypoténuse
D'où adjacent = hypoténuse x cos(Â) = 5 x cos(60) = 5 * 0.5 = 2.5 !

C'est bien gentil tout ce discours, mais à quoi ça sert ces fonctions là ?
Excellente question, je me remercie de l'avoir posée.

Applications :

Sur scratch, on travaille avec des coordonnées : x et y. Elles définissent la position d'un point dans le plan (la zone de dessin ici), par rapport à un point nommé origine, de coordonnées (0,0) et qui chez nous se trouvent en plein milieu de la zone de dessin.
Et bien, la magie vient du fait que l'axe selon lequel les x “bougent”, appelé l'axe des abscisses, et celui selon lequel les y “bougent” - l'axe des ordonnées - sont perpendiculaires entre eux.

Donc, quand je prend un point quelconque avec ses coordonnées x et y, je définis en fait un triangle rectangle !
Un côté de l'angle droit, horizontal, a pour longueur la valeur absolue de x (c'est à dire x sans son signe - s'il en a un), l'autre, vertical, a pour longueur la valeur absolue de y (donc encore une fois on oublie le signe -).
Grâce à ça, je peux connaître l'angle qu'il y a entre la droite qui relie l'origine (0,0) et mon point avec juste des sinus et des cosinus !
C'est ce que fait scratch en permanence quand on lui demande :
s'orienter vers [Quelquechose v]

Mais ça peut aussi marcher dans l'autre sens : si je veux tracer une droite de longueur donnée (disons 10), faisant un angle de 40° avec l'horizontale, et bien je sais tout de suite où je vais me trouver à la fin grâce à la trigonométrie :
x = côté adjacent, donc j'ai cos(40) = x / 10, d'où x = 10 x cos(40) = 7.66 (environ)
pareil pour y, sauf que lui c'est le côté opposé : sin(40) = y / 10 et y = 10 x sin(40) =6.43 (environ).

Voilà pour l'utilisation basique des fonctions trigonométriques pour travailler avec les coordonnées.

Mais @Ceo_ a soulevé un point intéressant : le “mouvement de va-et-vient”, ce qu'en terme un peu plus savant on va appeler périodicité (ça veut dire que la fonction revient régulièrement à la même valeur).

Pour cela, il va falloir introduire (encore) un nouveau concept : le cercle trigonométrique.
Kézako ? Ça :


C'est moche ? NON. C'est SURPUISSANT !

Explication : on prend nos deux axes préférés, x et y, les abscisses et les ordonnées, l'horizontale et la verticale, appelez-les comme vous voulez ce sont toujours les mêmes.
Bien, là dessus, on trace un cercle de centre l'origine (le point de coordonnées (0,0), l'intersection des deux axes) et de rayon 1 (parce que 1, c'est chouette, c'est pratique, voilà).

Bon, que se passe-t-il si je choisis un point au hasard sur mon cercle ?

Primo : il est à une distance de 1 exactement du centre, c'est la définition du cercle (un cercle de rayon R, c'est l'ensemble des points à une distance R de son centre, pour ceux qui ont vraiment besoin de rappels).

Secundo : si je connais l'angle qu'il y a entre l'axe des abscisses (des x, de l'horizontale, l'axe Robert, encore une fois vous l'appelez comme vous voulez) , et bien grâce aux applications vues juste au-dessus, je connais son cosinus et son sinus, vu que x c'est son cosinus x son hypoténuse et y c'est son sinus x son hypoténuse.
Or ici, l'hypoténuse fait pile 1 (je l'avais dit que 1 c'était chouette), donc en fait, x c'est le cosinus et y c'est le sinus !

Ça permet de remarque plusieurs choses :

  • le cosinus est toujours compris entre -1 et 1, vu qu'on ne sort pas du cercle
  • pareil, le sinus est touours compris entre -1 et 1
  • par Pythagore, on a (cos(t))² + (sin(t))² = 1 (TOUT LE TEMPS !)
  • et surtout, pour expliquer le phénomène qu'a remarqué @Ceo_ : quand je fais plus d'un tour, ça revient au même, donc cos(360 + t) = cos(t) et sin(360 + t ) = sin(t). D'où la périodicité des fonctions trigonométriques : chaque fois que j'ai fait un tour complet, je reviens au point de départ !

Bref, ce post est déjà BEAUCOUP trop long et soporifique, donc voici un bref résumé :

  • sin, cos et tan servent à trouver des longueurs connaissant des angles
  • asin, acos et atan servent à trouver des angles connaissant des longueurs
  • sin et cos (PAS tan) sont toujours comprises entre -1 et 1 (et elles passent par toutes les valeurs intermédiaires : pour les savants, elles sont surjectives sur (-1; 1) (pour la bijection faut restreindre l'ensemble de départ))
  • sin, cos et tan (mais PAS asin, acos et atan) sont 360 - périodiques, c'est à dire que tous les 360, elles valent la même chose.

Et en plus, cos et sin ressemblent à ça :
donc elles permettent de faire de “belles” oscillations, qui comme par hasard s'appellent des sinusoïdes !

Last edited by SBissay (Feb. 2, 2017 21:02:46)


Generative art :              Pivot  :               Sudoku :
spirou201
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Bravo pour ces explications :O elles vont très loin!
SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Merci !

J'ai eu peur d'aller trop loin (au début je voulais aussi introduire la notion de radian, par exemple), et de perdre en clarté, surtout que les applications concrètes demandent de bien comprendre les définitions…

Ça a été un défi intéressant, ma foi !

Generative art :              Pivot  :               Sudoku :
Deuzz
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

SBissay wrote:

Ça a été un défi intéressant, ma foi !
et fort bien rempli ! Mais j'avoue que la première chose qui m'est venue à l'esprit quand j'ai vu le post de Ceo_ où il parle de sorcellerie a été:
“ben, c'est parce que c'est une fonction sinusoïdale ^^”

frouvera
Scratcher
100+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Hello,

SBissay , je pense que tu en as laché quelques un en route, mais c'est clair et bien écrit:-)

Pour le modulo :

Un cas simple d'utilisation du modulo et trés fréquent :
pour construire un plateau de jeu ( échec, dames, puissance 4, touché coulé, 2048)
en gros ca te dit :
si le modulo 4 = 0 alors reviens à la ligne.

voir mon projet 2048 remix :
https://scratch.mit.edu/projects/105541470/
définir constructionTable

Last edited by frouvera (Feb. 3, 2017 10:23:48)

spirou201
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

C'est drole que vous dites que le modulo représente le reste de la division euclidienne, moi j'avais appris ca comme ca:

A mod N représente le chiffre des unités du nombre A écrit en base N

Mais au fond ca représente la même chose
ScratchClubFr
Scratcher
21 posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

A mod N représente le chiffre des unités du nombre A écrit en base N

Mais au fond ca représente la même chose

On est vraiment étonné par la définition que tu donnes, as tu appris les mathématiques en France ?
Cela est presque équivalent mais la définition avec le reste est à notre avis meilleure.
En effet
((27) modulo (16))
donne 11 avec ta définition on devrait avoir B en base 16 (c'est bien 11 mais)
mais comment écrire :
((10380) modulo (2016))
qui donne 300 car 10380 =5x2016 + 300
comment écrire 300 en base 2016 ?
Que penses tu de cela ?
spirou201
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Quand je parle du chiffre je parle du nombre en base 10 au chiffre des unités.

Par exemple, pour faire 20 mod 16, j'écris 30 en base 16, ce qui donne 1D
D en base 10 donne 4, et on trouve bien que 20 mod 16 = 4

J'ai appris cette definition dans un livre de maths Américain. Ils expliquaient en premier les horloges de Gauss.
SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

300 en base 2016 s'écrit (300). C'est en fait un seul “chiffre” de la base.

Generative art :              Pivot  :               Sudoku :
el15617
Scratcher
1000+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

SBissay wrote:

300 en base 2016 s'écrit (300). C'est en fait un seul “chiffre” de la base.
Yep !


Vendeur de brouettes depuis 1895 :p
littlekitykat
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

spirou201 wrote:

Deux autres blocs sont

([plafond] de (x))
([plancher] de (x))

Le “plafond” d'un nombre est simplement le nombre entier juste au dessus. Le “plafond” (en francais ca ne se dit pas) de 9.453 est 10
Le plancher c'est la meme chose mais pour le nombre entier juste en dessous.

Roh ca c'est cool moi qui cherchais depuis un moment l’équivalent de “TRUNC”….. il s'agit donc de “Plancher” !!

Merci cela va m'aider pour mes affichage des centaines et dizaines.

Quelques projets en cours !!

____________
Romain321
Scratcher
100+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

pour moi c'est bloc la son super utile même si il y en a des plus utile que d'autre
Itharius
Scratcher
1000+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Suite au post de gurvan sur le rayon d'un cercle, je cherche une brique pour mettre au carré, existe-t-elle ou dois-je la créer ? ou est-on obligé d'utiliser les bloc multiplier ?
Deuzz
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Il faut multiplier un nombre par lui même pour obtenir son carré, il n'y a pas de bloc pour ça…

Cependant, si tu dois faire un cube ou multiplier un chiffre par lui-même plusieurs fois dans le genre : Nombre^exposant tu peux utiliser ce petit bricolage :
(arrondi de ([e^ v] de (([ln v] de (Nombre)) * (exposant))))

et si tu mets en exposant une fraction comme 1/3 par exemple ce bloc te permets d'obtenir la racine cubique….

SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Haha, j'étais en train d'écrire un truc équivalent à Deuzz, le souci c'est la perte de précision…

Du coup, j'ai tendance à faire mon bricolage comme ça :

définir Puissance (x) (p)
si <([plancher v] de (p)) = (p)> alors
mettre [Résultat v] à [1]
répéter ([abs v] de (p)) fois
mettre [Résultat v] à ((Résultat) * (x))
end
si <(p) < [0]> alors
mettre [Résultat v] à ((1) / (Résultat))
end
sinon
mettre [Résultat v] à ([e ^ v] de ((p) * ([ln v] de (x)))
end

Last edited by SBissay (May 5, 2017 07:48:39)


Generative art :              Pivot  :               Sudoku :
Itharius
Scratcher
1000+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

ok merci , je voulais être sur de pas avoir raté la brique quelquepart, j'ai donc choisi d'utiliser le multiplier, c'est vrai que c'était une petite flemme de ma part mais comme j'ai découvert l'utilisation de plancher plafond et inverse de sin cos et tan dans ce fil, il fallait que je pose la question.

(ça n'a rien de grave dans l'immédiat mais j'ai absolument rien compris au message de Sbiissay que c'en est vraiment vraiment drôle)

Last edited by Itharius (May 5, 2017 12:06:51)

SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Oups, effectivement ce n'était pas très clair.

Je disais donc dans un premier temps que j'étais en train d'écrire à peu près la même réponse que Deuzz quand j'ai vu la sienne.

Mon second point, mal séparé du premier, concernait les inconvénients de la méthode par exponentielle/log : ça crée forcément une perte de précision, ce qui est dommage.

Du coup, troisième point, j'utilise un bloc personnalisé qui effectue différemment la puissance selon des cas différents :
- si elle est entière, on fait une boucle de multiplication
- si elle est entière et négative, on inverse ensuite (puisque x^(-n) = 1 / (x^n) )
- si elle n'est pas entière, alors méthode exp/log précitée.

Du coup, le seul moment où on peut perdre de la précision quand c'était évitable c'est en prenant une racine n-ième (donc puissance rationnelle) d'un nombre qui est une puissance n-ième (par exemple, prendre la racine cubique de 27 risque de retourner “environ 3” et pas forcément un vrai 3).

On pourrait, si nécessaire, gérer aussi ces cas mais là ça deviendrait un peu lourd.

Voilà, j'espère que c'est plus clair

Last edited by SBissay (May 5, 2017 14:32:07)


Generative art :              Pivot  :               Sudoku :
Deuzz
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

SBissay wrote:

(par exemple, prendre la racine cubique de 27 risque de retourner “environ 3” et pas forcément un vrai 3).

On pourrait, si nécessaire, gérer aussi ces cas mais là ça deviendrait un peu lourd.

… J'ai bien vu l'erreur mais vu qu'elle apparait au-delà de la dixième décimale je pense que le bloc (arrondi ( …)) suffit à gérer l'approximation…

SBissay
Scratcher
500+ posts

Utilisation des bloc nodulo, arrondie, racine carrée ect...

Deuzz wrote:

… J'ai bien vu l'erreur mais vu qu'elle apparait au-delà de la dixième décimale je pense que le bloc (arrondi ( …)) suffit à gérer l'approximation…

Le souci de l'arrondi, c'est que 2^(1/2) ( = racine de 2) donne 1 avec l'arrondi et pas 1.4142…

Donc en fait, quoi que l'on fasse, il y a un moment où l'on est embêté…

Generative art :              Pivot  :               Sudoku :

Powered by DjangoBB