Discuss Scratch

Supergames-fr
Scratcher
41 posts

Problème sur un script

Bonjour à toutes et à tous,
J'espère ne pas vous déranger, mais j'ai besoin de vos connaissances pour résoudre un problème sur un script…

Voici le script de base :
tourner droite de (((((RPM) / (31.48148148148148)) - (direction)) + (45)) / (10)) degrés

Quelques informations :
- Quand le moteur est à l'arrêt, l'aiguille est orientée à 45° ;
- Quand le moteur tourne à 8500 tr/min, l'aiguille est orientée à -135°.

Le bloc précédent est celui correspondant quand la direction d'une aiguille est comprise entre 0 et 180. Attention, l'aiguille est vers la gauche sur le dessin du costume. Et quand je mets le régime moteur au-delà de 4250 tr/min, l'aiguille est en direction négative (en-dessous de 0°). Or, avec ce script, l'aiguille n'arrête pas de tourner en rond. J'ai fait presque tout le tour au niveau de la modification des scripts, mais rien n'y fait…

Je vous le dis : le bloc doit commencer par “tourner droite de … degrés” et la fin doit être (/ 10) ou (/ -10)

Cela fait plusieurs heures que je cherche la solution… J'en ai MARRE !!!!!!!!

Alors, s'il vous plaît, aidez-moi, je serais très ravi !

Merci d'avance,
Supergames-fr

Last edited by Supergames-fr (Nov. 17, 2018 19:14:40)


J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
SBissay
Scratcher
500+ posts

Problème sur un script

Alors, on veut une progression linéaire, j'imagine ?

Alors il faut chercher la formule qui sera du style : rotation = a * RPM + b, ce qui nous donne le système de deux équations à deux inconnues suivant :
  1. 45 = a * 0 + b
  2. -135 = a * 8500 + b

On obtient de suite b = 45 grâce à 1., et on l'insère dans 2. :
  1. b = 45
  2. -135 = a * 8500 + 45

D'où a = -180 / 8500 = -9 / 425

Donc la direction vaut -9 / 425 * RPM + 45.
Maintenant, pour savoir de combien il faut tourner, il faut enlever ta direction, et donc
tourner droite de (((((-9)/(425)) * (RPM)) + (45)) - (direction)) degrés
(Et je ne vois vraiment pas d'où sort ton (/10) …).

Generative art :              Pivot  :               Sudoku :
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

Alors, on veut une progression linéaire, j'imagine ?

Alors il faut chercher la formule qui sera du style : rotation = a * RPM + b, ce qui nous donne le système de deux équations à deux inconnues suivant :
  1. 45 = a * 0 + b
  2. -135 = a * 8500 + b

On obtient de suite b = 45 grâce à 1., et on l'insère dans 2. :
  1. b = 45
  2. -135 = a * 8500 + 45

D'où a = -180 / 8500 = -9 / 425

Donc la direction vaut -9 / 425 * RPM + 45.
Maintenant, pour savoir de combien il faut tourner, il faut enlever ta direction, et donc
tourner droite de (((((-9)/(425)) * (RPM)) + (45)) - (direction)) degrés
(Et je ne vois vraiment pas d'où sort ton (/10) …).


Bonjour, merci pour ton conseil…
Le (/10) est présent pour retarder le mouvement de l'aiguille par rapport au régime du moteur.

À bientôt,
Supergames-fr

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

Alors, on veut une progression linéaire, j'imagine ?

Alors il faut chercher la formule qui sera du style : rotation = a * RPM + b, ce qui nous donne le système de deux équations à deux inconnues suivant :
  1. 45 = a * 0 + b
  2. -135 = a * 8500 + b

On obtient de suite b = 45 grâce à 1., et on l'insère dans 2. :
  1. b = 45
  2. -135 = a * 8500 + 45

D'où a = -180 / 8500 = -9 / 425

Donc la direction vaut -9 / 425 * RPM + 45.
Maintenant, pour savoir de combien il faut tourner, il faut enlever ta direction, et donc
tourner droite de (((((-9)/(425)) * (RPM)) + (45)) - (direction)) degrés
(Et je ne vois vraiment pas d'où sort ton (/10) …).
Re-bonjour,
J'ai essayé ton script, mais il ne fonctionne pas…
La direction de l'aiguille est inversée quand je fais tourner le moteur à plus de 4250 tr/min. Au passage, je me suis trompé en tapant le message original, car à 8500 rpm, l'aiguille est en fait orientée à -45°.

Donc STP, peut-tu me refaire le script en tenant compte de la petite modification ? Je t'en serai reconnaissant.
Merci d'avance et à plus tard,
Supergames-fr

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
bidulule
Scratcher
1000+ posts

Problème sur un script

Supergames-fr wrote:

SBissay wrote:

Alors, on veut une progression linéaire, j'imagine ?

Alors il faut chercher la formule qui sera du style : rotation = a * RPM + b, ce qui nous donne le système de deux équations à deux inconnues suivant :
  1. 45 = a * 0 + b
  2. -135 = a * 8500 + b

On obtient de suite b = 45 grâce à 1., et on l'insère dans 2. :
  1. b = 45
  2. -135 = a * 8500 + 45

D'où a = -180 / 8500 = -9 / 425

Donc la direction vaut -9 / 425 * RPM + 45.
Maintenant, pour savoir de combien il faut tourner, il faut enlever ta direction, et donc
tourner droite de (((((-9)/(425)) * (RPM)) + (45)) - (direction)) degrés
(Et je ne vois vraiment pas d'où sort ton (/10) …).
Re-bonjour,
J'ai essayé ton script, mais il ne fonctionne pas…
La direction de l'aiguille est inversée quand je fais tourner le moteur à plus de 4250 tr/min. Au passage, je me suis trompé en tapant le message original, car à 8500 rpm, l'aiguille est en fait orientée à -45°.

Donc STP, peut-tu me refaire le script en tenant compte de la petite modification ? Je t'en serai reconnaissant.
Merci d'avance et à plus tard,
Supergames-fr
suffit de remplacer les valeurs que tu veux modifier dans sa formule ^^

SBissay
Scratcher
500+ posts

Problème sur un script

Bidulule a tout dit, suffit de re-résoudre le système d'équations.

On a :

  1. 45 = a * 0 + b
  2. -45 = a * 8500 + b

Donc b = 45 reste vrai, et on remplace dans 2. : -90 = a * 8500, soit a = -90 / 8500 = -9 / 850
Du coup le bloc devient
tourner droite de (((((-9) / (850)) * (RPM)) + (45))- (direction)) degrés

Generative art :              Pivot  :               Sudoku :
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

Bidulule a tout dit, suffit de re-résoudre le système d'équations.

On a :

  1. 45 = a * 0 + b
  2. -45 = a * 8500 + b

Donc b = 45 reste vrai, et on remplace dans 2. : -90 = a * 8500, soit a = -90 / 8500 = -9 / 850
Du coup le bloc devient
tourner droite de (((((-9) / (850)) * (RPM)) + (45))- (direction)) degrés
Re-re-bonjour,
Désolé de te casser la tête, mais le script que tu m'as conseillé est exactement pareil que le précédent (la direction est inversée, puisque quand le moteur tourne à 6375 tr/min, l'aiguille est orientée à 45° et indique le zéro du compte-tours)…
J'espère que je ne te dérange pas trop mais peut-tu me re-refaire le script STP ????? Je t'en serai ULTRA reconnaissant !

Merci d'avance,
Supergames-fr

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
SBissay
Scratcher
500+ posts

Problème sur un script

Puis-je avoir accès au projet en question ?

Parce que là, en théorie ça fait ce que tu demandes, donc il faudrait que je voie l'implémentation pour comprendre ce qui ne va pas.

Generative art :              Pivot  :               Sudoku :
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

Puis-je avoir accès au projet en question ?

Parce que là, en théorie ça fait ce que tu demandes, donc il faudrait que je voie l'implémentation pour comprendre ce qui ne va pas.
Le projet que je refais n'est pas partagé, mais il y a l'autre version :

https://scratch.mit.edu/projects/251008308/

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
SBissay
Scratcher
500+ posts

Problème sur un script

C'est gentil, mais ce n'est pas sur un projet qui fonctionne que je vais voir ce qui ne va pas

Generative art :              Pivot  :               Sudoku :
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

C'est gentil, mais ce n'est pas sur un projet qui fonctionne que je vais voir ce qui ne va pas
En fait il faut que tu modifies le bloc
 s'orienter à (...) 
du lutin “RPM Needle” en le remplaçant par le script que j'ai mis sur le tout premier message. Il a comme intêret de retarder le mouvement de l'aiguille par rapport au régime moteur.

Bon courage !

Last edited by Supergames-fr (Nov. 20, 2018 14:36:16)


J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

C'est gentil, mais ce n'est pas sur un projet qui fonctionne que je vais voir ce qui ne va pas
Bonsoir, j'espère ne pas te déranger, mais,
Est-ce que tu as trouvé une solution au problème ? C'est pas que je suis impatient, mais je veux vraiment voir ce que ça donne !
Si oui, pourrais-tu me montrer le bloc ? Je le rappelle : il faut remplacer le bloc
s'orienter à (...)
par un bloc en
tourner droite de (...) degrés

Merci d'avance,
Supergames-fr

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!
Try5t4n
Scratcher
100+ posts

Problème sur un script

imagine que tu tourne de 360 degres c est normal que l aiguille reste a sa place

point towards ((3d::#999)+(100% pen::#125)+(games::#148)+(tests::#589)::custom)::hat pen
create::list

MATHEMATHICS




















SBissay
Scratcher
500+ posts

Problème sur un script

Bon, sur ton exemple le lutin n'est pas orienté correctement dans l'éditeur, du coup les valeurs de multiplicateur sont faussées, mais on va faire sans.

J'ai trouvé d'où venait le souci : on travaille modulo 360 (des angles, et un angle de 361 c'est un angle de 1), et ça pose des problèmes lors des soustractions, car il faut avoir 350 = -10 quand ça nous arrange.

Bref, voici un début de script, qui fonctionne sur ton projet, avec le multiplicateur à modifier si tu mets ton lutin dans un autre orientation :

si <((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) > [360]> alors 
tourner droite de ((((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) - (360)) / (10)) degrés
sinon
tourner droite de (((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) / (10)) degrés
end

Explication : il faut commencer par mettre la direction modulo 360, pour que -90 soit 270, par exemple.
Ensuite, il faut séparer le cas où la soustraction est supérieure à 360 pour éviter de se retrouver avec des sauts de 36.1° quand ça devrait être 0.1°…

Bref, pas le courage de me lancer dans une explication détaillée de l'arithmétique en modulo, mais ça, chez moi, ça fonctionne.

Last edited by SBissay (Nov. 29, 2018 19:32:08)


Generative art :              Pivot  :               Sudoku :
Supergames-fr
Scratcher
41 posts

Problème sur un script

SBissay wrote:

Bon, sur ton exemple le lutin n'est pas orienté correctement dans l'éditeur, du coup les valeurs de multiplicateur sont faussées, mais on va faire sans.

J'ai trouvé d'où venait le souci : on travaille modulo 360 (des angles, et un angle de 361 c'est un angle de 1), et ça pose des problèmes lors des soustractions, car il faut avoir 350 = -10 quand ça nous arrange.

Bref, voici un début de script, qui fonctionne sur ton projet, avec le multiplicateur à modifier si tu mets ton lutin dans un autre orientation :

si <((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) > [360]> alors 
tourner droite de ((((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) - (360)) / (10)) degrés
sinon
tourner droite de (((((RPM) / (31.481481481481)) + (45))-((direction) modulo (360))) / (10)) degrés
end

Explication : il faut commencer par mettre la direction modulo 360, pour que -90 soit 270, par exemple.
Ensuite, il faut séparer le cas où la soustraction est supérieure à 360 pour éviter de se retrouver avec des sauts de 36.1° quand ça devrait être 0.1°…

Bref, pas le courage de me lancer dans une explication détaillée de l'arithmétique en modulo, mais ça, chez moi, ça fonctionne.
Bonsoir,
Merci de ton aide, le script fonctionne désormais PARFAITEMENT BIEN !!!!

Merci, Merci et encore MERCI pour tout !
Supergames-fr

J'aime tout ce qui touche à l'automobile.

si (tu trouves que mes projets sont bien,) alors
N'hésite pas à laisser un coeur, un favori ou bien tout simplement :
ABONNE-TOI !!!

Je te souhaite une merveilleuse année 2020 !!!

Powered by DjangoBB