Discuss Scratch

littlekitykat
Scratcher
500+ posts

Exercice de math 2.0

Je tentes de lancer ce sujet à partir de mon portable c pas gagné.
J ai besoin pour mon jeu de course de définir une force centrifuge en fonction de ma vitesse et de la courbe de mon virage.
Mon virage est défini par une série de segments de taille z = 300. D une longueur totale variable = nbr de segment total et dont le décalage en x est fixe durant toute la longueur et = à Dx.

Pour le moment mon calcul est fixe et je me demandais si cela n était pas une erreur. La force grandi sur la moitié de ma courbe et diminue ensuite ???

Est il possible de calculer tout ceci en simulant un calcul de corde et des flèche afin de trouver le rayon théorique de ma courbe ?

Quelques projets en cours !!

____________
littlekitykat
Scratcher
500+ posts

Exercice de math 2.0

Euh quand je parle de force, je parle de décalage en x. Car je ne sais pas appliquer de newton dans mon jeu

Quelques projets en cours !!

____________
bidulule
Scratcher
1000+ posts

Exercice de math 2.0

La force centrifuge ça existe paaaaaaaaas :p (fin j'crois)
Pour les dérapages, c'est seulement l'inertie qui fait déraper le bolide ^^ je suis pas un expert dans à ce sujet car j'ai pas encore eu ça au programme mais Ce lien devrait d'aider à y voir plus clair
Ps: je suis aussi entrain de galérer à écrire depuis mon tel x)

bidulule
Scratcher
1000+ posts

Exercice de math 2.0

Et pour “la force centrifuge” voilà de quoi confirmer les dires ^^ https://fr.m.wikipedia.org/wiki/Force_centrifuge

bidulule
Scratcher
1000+ posts

Exercice de math 2.0

Newton c'est pas si compliqué de ce que j'ai vu ^^

bidulule
Scratcher
1000+ posts

Exercice de math 2.0

En gros, la direction de tes roues donne le sens de l'accélération, le freinage est maximal à la perpendiculaire des roues et la vitesse est une somme de ces deux forces (quand je dis somme, je veux dire que ces forces sont ajoutées par dessus la vitesse existante. ^^

bidulule
Scratcher
1000+ posts

Exercice de math 2.0

A chaque seconde, une vitesse subissant une accélération de 5km/h augmentera de 5 km/h

On peut donc faire
VitesseX=AccelerationX*Temps - ForcedefreinageX*Temps + vitesseXdedépart
Et positionX=positionXdedépart + vitesse*Temps
De même pour y

littlekitykat
Scratcher
500+ posts

Exercice de math 2.0

Merci , Bidulule, cette approche me parait bonne pour mon projet Microcars.. même si je ne comprends pas la notion de vitesseXdedépart.

Par contre elle ne va pas pour le projet de formule 1 car il n'y a aucune rotation.

Voici l'approche qui m'a permis de faire le jeux : https://codeincomplete.com/posts/javascript-racer-v2-curves/

Ca sera peu être plus claire. Aprés, évidement il y a des différences.

Quelques projets en cours !!

____________
SBissay
Scratcher
500+ posts

Exercice de math 2.0

Bon, c'est pas des maths mais de la physique, mais je vais tâcher de répondre aussi.

Premièrement, quelques réponse à bidulule : en effet, les forces centrifuges et centripètes sont des forces fictives : elles n'ont aucune réalité, mais oublie-les quand tu travailles dans un référentiel non galiléen et tous tes calculs seront faux !

Pour prendre un exemple : dans le cas d'un pendule simple, les seules “vraies” forces qu'il subit sont la gravité et la tension du fil :

Toutefois, pour l'étudier il est beaucoup plus simple de se placer dans un repère polaire centré sur la masse, et ce dernier n'est pas galiléen. Dans ce repère, si l'on omet la force centripète, le pendule devrait se déplacer… en ligne droite ! C'est évidemment faux.

Tout ça pour dire : qu'une force soit fictive ne signifie pas qu'on doit l'oublier

Ensuite, concernant tes “calculs”, il y a quelques imprécisions :
  1. Une accélération s'exprime en m/s² ou un équivalent. Donc on ne peut pas avoir une accélération de 5km/h. Au pire, tu peux accélérer de 5km/h/s (ce qui veut dire que ta vitesse augmente de 5km/h toutes les secondes).
  2. Ton calcul “VitesseX=AccelerationX*Temps - ForcedefreinageX*Temps + vitesseXdedépart” n'est vrai que dans un cas : l'accélération est constante. Ici, ce n'est pas vrai. Une solution est plutôt de partir de ce qu'on sait à un instant “t” pour calculer ce que sera le système à un instant “suivant”, c'est à dire quand on augmente le temps d'un petit montant, en général noté “dt”. Et on a alors : v(t + dt) = v(t) + dt * a(t). J'ai inclus le freinage dans l'accélération, vu que c'est une force et que la mécanique classique nous dit : m * a = somme des forces (avec m la masse).
  3. De même pour la position : p(t + dt) = p(t) + dt * v(t).

Les calculs que je viens de donner correspondent en fait au schéma d'intégration d'Euler : en effet, les lois de la mécanique nous donnent l'accélération, et il faut ensuite l'intégrer pour trouver la vitesse, qu'on intègre à nouveau pour trouver la position. Or l'intégration est un calcul qu'on sait rarement faire, mais qu'on peut approcher par différentes méthodes (les “schémas d'intégration”). Celui d'Euler est le plus simple (mais évidemment pas le plus précis ni stable). SI ça t'intéresse, je te conseille de jeter un œil aux méthodes de Runge-Kutta pour des schémas bien plus efficaces (mais plus difficiles à mettre en place). Attention, c'est assez velu.


Pour en revenir au problème de littlekitykat :je pense que t'embêter à simuler des lois physiques réalistes n'apporterait rien de bon. Autant trouver une bonne approximation qui donne des résultats cohérents et crédibles. J'ai fait quelques recherches sur le net pour voir comment s'y prenaient les devs de jeux d'arcade, et souvent la méthode est la suivante : quand on tourne, on considère qu'on effectue un arc de cercle, mais le rayon de ce cercle va dépendre de ta vitesse : plus elle est élevée, plus le rayon sera grand.

J'ai fait un petit schéma :

En rouge, ta vitesse rectiligne, en bleu le cercle qu'on va suivre, en noir le rayon dudit cercle, en vert la trajectoire en courbe qui sera suivie et en cyan l'angle qui correspond.

Le truc, c'est que r dépend de ta vitesse v, a priori de façon linéaire : r = c * v + d, avec c et d des constantes. Trouver ces constantes va dépendre de deux comportements connus : imaginons que tu sais qu'à 10 km/h, ta voiture peut faire un cercle très très serré de rayon 2m et qu'à 100km/h le rayon de ce cercle est devenu 50m (chiffres au hasard, hein) : alors on a 2 = c * 10 + d et 50 = c * 100 + d.
On en déduit assez aisément : c = 8/15 et d = -10/3.
Tu l'auras compris, ce sera à toi de faire quelques essais pour trouver les valeurs de c et d qui te conviennent.

Mais une fois qu'on les a, comment les utiliser ?
Une fois qu'on connaît le rayon de cercle en fonction de la vitesse, il faut trouver l'angle a correspondant afin de connaître notre vraie trajectoire.
Or un arc de cercle d'angle “a” a pour longueur : (2 * π / a) * r (si on est en radians) ou encore (360 / a ) * r en degrés.
On connaît la longueur voulue (v), on connaît r, on peut en déduire a : v = (360 / a) * r <=> a = 360 * r / v (bien sûr, ça implique une vitesse non nulle… on ne divise pas par 0 !).

Maintenant qu'on connaît a, on peut savoir de combien on s'est déplacé en avant, et latéralement :
On va supposer qu'on tourne à droite : le centre du cercle a donc pour coordonnées (x + r, y).
Alors le point au bout de notre arc de cercle d'angle “a” a pour coordonnées : ((x + r) + r * cos(180 - a), y + r * sin(180 - a)).
Puisque cos(180 - a) = -cos(a) et sin(180 - a) = sin(a), on peut les réécrire : (x + r - r * cos(a), y + r * sin(a)).

Ainsi, notre déplacement vers l'avant est de r * sin(a), et notre déplacement latéral est de r * (1 - cos(a)). Donc on se déplace un peu moins vers l'avant, et on a bien un déplacement latéral.

Juste pour être complet : si l'on tourne vers la gauche, le centre du cercle a pour coordonnées (x - r, y).
Le bout de l'arc de cercle est alors a (x - r + r*cos(a), y + r * sin(a)) et l'on a directement notre déplacement latéral qui vaut r*(cos(a) - 1) et vers l'avant : r * sin(a) (et c'est normal qu'on avance autant vers l'avant, et que le déplacement latéral soit juste l'opposé, donc on est rassuré).

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

Exercice de math 2.0

Tout d'abord merci pour toutes ces recherches qui vont me donner mal a la tête je pense

SBissay wrote:

Pour en revenir au problème de littlekitykat :je pense que t'embêter à simuler des lois physiques réalistes n'apporterait rien de bon. Autant trouver une bonne approximation qui donne des résultats cohérents et crédibles. J'ai fait quelques recherches sur le net pour voir comment s'y prenaient les devs de jeux d'arcade, et souvent la méthode est la suivante : quand on tourne, on considère qu'on effectue un arc de cercle, mais le rayon de ce cercle va dépendre de ta vitesse : plus elle est élevée, plus le rayon sera grand.

Je suis curieuse de connaitre tes sources. afin d'y jeter un coup d'oeil . Car malgré mes recherches je n'ai pas trouvé ce type d'infos.

Je te rejoins sur le fait qu'il s'agit d'arcade et non pas de simulation. Et du coup je rebondie pour vous redire qu'en réalité il n'y a pas de rotation.
La voiture ne tourne pas elle reste a la même position et la route ne tourne pas non plus. en fait il s'agit juste d'une succession en profondeur Z de segments qui ont tous la même tailles la même position en Hauteur Y = 0.

Si je supprime l'effet d'inertie suivante que j'ai aujouté
ajouter à [@PlayerX] (((Dx) * (@Speedpercent)) / (0.112))
La voiture fait le parcours sans avoir a bouger. Voir le projet : https://scratch.mit.edu/projects/225569460/

Du coup vos calculs m'oblige a faire 2 choses :
- La première est de créer une rotation virtuelle de la voiture et la projeter sur mon axe X. Ce qui me parait complexe du moins mon cerveau ne fait pas le rapprochement … ) .En effet lorsque la voiture est en ligne droite et que je tourne le volant , la route ne tourne pas, mais la voiture se déplace sur l'axe X. Ce qui doit étre la formule N°1 .

- La seconde est donc de mettre en place un calcul qui me permettrait de connaitre “a”. Car aujourd'hui la “courbe” est précalculeé. il s'agit d'un déplacement en “X” des segments a venir et plus la distance est lointaine et plus le Dx augmente . Ce qui donne cette effet de courbe.

Je vais essayer de compiler le tout mais je pensais faire quelques choses de plus simple et me concentrer sur les décors Que va t'il se passer quand vous aller me demander de mettre des rapports de vitesse pour passer les virages lol !!







Quelques projets en cours !!

____________
SBissay
Scratcher
500+ posts

Exercice de math 2.0

Source : la partie arcade de ça.

Generative art :              Pivot  :               Sudoku :
CatOnTreeStudio
Scratcher
19 posts

Exercice de math 2.0

ok,
je viens de mettre le tout sur papier et j'obtient cela.

1) La route fait 3000 points ( 1500 a gauche et 1500 a droite ).
- Je voudrais que la voiture parcoure ces 3000 points en 1 sec (soit 30 Cycles ). lorsqu'elle est a vitesse maxi . 600 points/ Cycle. => 100 = 600c + d
- Et ensuite qu'elle parcoure le 10/eme au 10/eme de la vitesse => 10 = 60c+d

=> c =1/6 et d= 0 on obtient la formule du rayon de braquage r = 1/6* vitesse

2) Je ne connais pas vraiment la longueur totale “Lt” de ma boucle mais je sais qu'a chaque cycle je vais avoir un décalage de x “Dx” de 20 sur une profondeur “Z”de 300. je n'ai pas de Y dans mon plan. Si je simplifie, je peux dire que ma corde , ou “Lt” = “Dx”.
- Donc a = (360 * 1/6 * Vitesse) / Dx

=> a vitesse max : a = 1800° ?????
=> a vitesse max/2 a = 450° ???

Ca marche pas !!!

Last edited by CatOnTreeStudio (June 14, 2018 13:22:19)

SBissay
Scratcher
500+ posts

Exercice de math 2.0

Houla, y a des problèmes…

Je n'ai pas trop saisi à quoi correspondait tes “points”, mais je vais faire abstraction.

1er souci : tu pars de la déviation finale voulue pour trouver le rayon du cercle, or ce n'est pas comme ça que la formule est construite. Don ça déconne.

2nd souci : Dx est a priori un changement sur l'axe des x, pas une vitesse, et donc diviser par ça dans la formule pour a n'a pas de sens.

Bref, je cherche une méthode avec tes données et je reviens vers toi. (Et si au passage tu peux élaborer sur les “points”, je suis preneur).

Edit : tes “points” correspondent à une unité de largeur de la route ? Et donc tu veux que la voiture traverse une largeur de route complète en 1s à vitesse max ?

Edit 2 : si c'est le cas, il est aberrant de vouloir tourner “moins fort” en allant moins vite. Tu devrais au contraire pouvoir traverser la route plus rapidement avec une vitesse moindre.

Last edited by SBissay (June 14, 2018 14:42:55)


Generative art :              Pivot  :               Sudoku :
CatOnTreeStudio
Scratcher
19 posts

Exercice de math 2.0

SBissay wrote:

Edit : tes “points” correspondent à une unité de largeur de la route ? Et donc tu veux que la voiture traverse une largeur de route complète en 1s à vitesse max ?

Voila c'est tout a fait cela. j'ai pas d'unités de grandeur . 3000 étant la largeur de la route et 300 la profondeur du segment ( ou rectangle) a afficher mais il ne s'agit pas de mêtres ou de Km.

SBissay wrote:

Edit 2 : si c'est le cas, il est aberrant de vouloir tourner “moins fort” en allant moins vite. Tu devrais au contraire pouvoir traverser la route plus rapidement avec une vitesse moindre.

Oui mon pb vient surement de la… mais ca me parait être plus réaliste . sur l'autoroute tu va bien de gauche a droite plus vite a 150km/h qu'a 20 ??

“Dx” n'est pas une vitesse c'est le décalage VISUELLE en x de ma route qui va créer un effet de rotation de la route.

Last edited by CatOnTreeStudio (June 14, 2018 14:57:52)

SBissay
Scratcher
500+ posts

Exercice de math 2.0

Ca depend, tu fais un demi tour sur quelle largeur à 150km/h ? Et à 20km/h ?

Generative art :              Pivot  :               Sudoku :
CatOnTreeStudio
Scratcher
19 posts

Exercice de math 2.0

Ma voiture ne tourne jamais
SBissay
Scratcher
500+ posts

Exercice de math 2.0

En fait le truc à voir c'est qu'on parle de “vitesse angulaire”.
A 20km/h, il te faudra plus de temps pour parcourir la distance correspondant à une largeur de route qu'à 150km/h, mais par contre, pour chaque mètre que tu feras, tu auras accompli une plus grande partie de ton demi-tour : tu auras tourné plus fort, d'où une vitesse angulaire plus grande.

C'est là l'astuce : plus ta vitesse est élevée, moins ta vitesse angulaire peut l'être (sinon, justement, l'effet t'envoie dans le décor).

Last edited by SBissay (June 14, 2018 15:00:17)


Generative art :              Pivot  :               Sudoku :
CatOnTreeStudio
Scratcher
19 posts

Exercice de math 2.0

il faut que tu lises ceci . afin que l'on parle de la même chose !!

https://codeincomplete.com/posts/javascript-racer-v1-straight/

Last edited by CatOnTreeStudio (June 14, 2018 15:00:50)

CatOnTreeStudio
Scratcher
19 posts

Exercice de math 2.0

Ah !! je crois que j'ai compris !!
Je dois agir sur ma distance parcouru lors de mon virage quii devra etre moins importante au fur et a mesure de mon virage !!! car actuellement mon calcul de z est tjs constant !!
SBissay
Scratcher
500+ posts

Exercice de math 2.0

Je l'ai lu (en diagonale), et autant il explique comment tracer une route courbe (dans la partie 2), autant je cherche encore comment il gère les virages de la voiture…

Edit : j'ai trouvé, mais du coup son code est ce que tu as fait, et donc pas réaliste du tout.

Last edited by SBissay (June 14, 2018 15:21:26)


Generative art :              Pivot  :               Sudoku :

Powered by DjangoBB