Bonjour à tous, en même temps que je créé mon jeu de courses, j´aurais besoin de faire de la physique pour les objets qui tombent. Ce sera bien sûr fait en BlitzBasic et je pourrais le distribuez si vous le voulez. Bon, pour ce qui est des notions de physique, j´ai eu le cours de physique à l´école (pas de science physique ni de chimie, seulement de la physique (j´ai 17 ans)) pour vous montrer le niveau environ, car au Québec, c´est pas la même chose qu´en Europe. J´ai appris les positions en fonctions du temps, la vitesse en fonction du temps, l´accélération en fonction du temps et pleins d´autres choses, mais je voudrais commencer par ceux-ci. J´ai appris que l´accélération gravitationnelle était de 9,8 m/s², or, cette gravitée, j´ai aucune idée de comment l´écrire dans un langage de programmation. Si vous auriez juste une idée du comment commencer, ca pourrait m´aider beaucoup.
Merci d´avance.
c´est une question très interessante, mais un peu vague que tu pose.
Le concept à appliquer à la base (pour faire quelque chose de simple), c´est d´appliquer la formule :
m*a=f
Je suppose qu´il y a quelque part dans ton jeu une boucle qui gère chaque frame d´affichage ou chaque unité de temps.
Il faut alors que pour chaque objet dans ton jeu qui peut tomber tu connaisse sa vitesse, sa position et sa masse.
Et tu fait alors :
nouvelle vitesse = ancienne vitesse + g/masse*(nouveau temps-ancien temps)
où la vitesse est un vecteur bien sûr.Puis tu fait :
nouvelle position=ancienne position+vitesse.
et tu fait ça pour chaque objet qui tombe. C´est assez simple a écrire et dans un premier temps ça donne des résultats qui sont tout à fait correcte.
Salut
Je sais pas si ça peut t´être utile mais j´ai rien à perdre , on fait justement la gravitation universelle en ce moment .
En fait pour connaitre la force de la gravitation universelle en Newtons sur deux objets il faut faire : G * ((M1 * M2)/D²) ou D est en metres , et M en kilogrammes .
G est égal a 9.81 il me semble
Si ça a pu t´aider tant mieux
sinon tant pis
Toi [-AFK-] tu es en seconde chuis sûr !
D´ailleur, si on est sur terre tu peux carrément simplifier la formule, est utilisé celle du poid :
P = m.g (si mes souvenirs sont bons).
Bien joué lock je suis en seconde ![]()
dnob700 bouton profilbouton profil Posté le 07 avril 2006 à 10:21:50
c´est une question très interessante, mais un peu vague que tu pose.
Le concept à appliquer à la base (pour faire quelque chose de simple), c´est d´appliquer la formule :
m*a=f
Je suppose qu´il y a quelque part dans ton jeu une boucle qui gère chaque frame d´affichage ou chaque unité de temps.
Il faut alors que pour chaque objet dans ton jeu qui peut tomber tu connaisse sa vitesse, sa position et sa masse.
Et tu fait alors :
nouvelle vitesse = ancienne vitesse + g/masse*(nouveau temps-ancien temps)
où la vitesse est un vecteur bien sûr.Puis tu fait :
nouvelle position=ancienne position+vitesse.
et tu fait ça pour chaque objet qui tombe. C´est assez simple a écrire et dans un premier temps ça donne des résultats qui sont tout à fait correcte.
En fait, c´est pour l´instant, un projet de création de «librairy», un fichier .bb appart qu´on incluera au programme principale... «Include physique.bb» et qui permettra d´utiliser la physique dans les futures programmes. Je vais essayer ce faire ce que tu viens de me dire, et je viendrais vous montrer mes résultats, si ca fonctionne.
[-AFK-] bouton profilbouton profil Posté le 07 avril 2006 à 15:08:26
Salut
Je sais pas si ça peut t´être utile mais j´ai rien à perdre , on fait justement la gravitation universelle en ce moment .
En fait pour connaitre la force de la gravitation universelle en Newtons sur deux objets il faut faire : G * ((M1 * M2)/D²) ou D est en metres , et M en kilogrammes .
G est égal a 9.81 il me semble
Si ça a pu t´aider tant mieux
sinon tant pis
Je connais aussi cette formule, mais elle est pour trouver l´accélération gravitationnelle et je l´ai déjà 9.8m/s², mais merci quand même.
la physique c´est simple, c´est que des formules... Il existe des milliers de sites specialisés la dedans! le seul truc c´est d´utiliser les memes unités quelle que soit la formule (par ex: grammes dans l´une et kilogrammes dans l´autre, ça va pas.)
dnob700 Posté le 07 avril 2006 à 14:07:50
[...]
m*a=f
Je suppose qu´il y a quelque part dans ton jeu une boucle qui gère chaque frame d´affichage ou chaque unité de temps.
Il faut alors que pour chaque objet dans ton jeu qui peut tomber tu connaisse sa vitesse, sa position et sa masse.
Et tu fait alors :
nouvelle vitesse = ancienne vitesse + g/masse*(nouveau temps-ancien temps)
où la vitesse est un vecteur bien sûr.Puis tu fait :
nouvelle position=ancienne position+vitesse.
[...]
En passant, la masse de l´objet ne joue aucunement sur le temps que ca prendra pour se rendre au sol... Mon professeur de physique nous l´a montré, il avait deux billes (de grandeurs différentes, donc de masse différentes) et elles sont arrivées en même temps au sol.
Normal car g est en fait en m/s² donc une accélération, indépendante de la masse ![]()
effectivement, j´ai dit n´importe quoi (heureusement que j´ai un pseudo, sinon mon prof de physique m´assassinerait). Il n´y a pas besoin de divisé par la masse dans ma formule car la force c´est g*masse et non pas g, donc ça se compense.
En passant, est-ce que tu peut arreter de recopier tout les post lorsque tu y répond. Si tu en as besoin, recopie juste une phrase ou deux, mais sinon ça rend assez difficile à suivre, car on ne voit pas ce qui est nouveau ou ce qui a déjà été cité 3 fois.
dnob700
Désolé, ca fait plus de quatre ans que je visite des forums et jamais quelqu´un m´a dit qu´il aimait pas que je copie son poste... je trouve ca bien, un peu comme citation sur les forums phpBB.
Ah la phyqiue de Newton ![]()
sigma F = ma
Tu peux gérer la pesanteur, une force de poussée si tu veux (ou plusieurs) des frottements proportionnels a v ou a v², comme tu veux, bref, si tu sais comment exprimer une force, y´a de quoi se régaler...
Mais un truc ou je n´ai jamais eu de réponse simple (si ça existe)
Comment faire pour avoir une force d´adhérence de penus ? Un truc simple : approché de la réalité
Exemple :
Un jeu de voiture : tu définis les forces :
F1 = force de gravité
F2 = résistance de la route (ce qui te fera aller plus vite si tu es en descente)
F3 = poussée du moteur : pour simplifier, si le joueur appuie, tu mets F3 = constante, si il lache, tu mets F3 = 0
F4 = une force de frottement a la route (si le joueur lache tout, il fini par s´arreter a la longue...)
F5 = une force de frottement a l´air (inférieure forcément : si le joueur décolle, il ralentit moins vite que sur la route)
Ces forces la, données dans un sigma F = m*a, me donnent un truc bien réaliste !!
Mais le probleme, je cherche un F6 (un truc simple de préférence, meme si ce n´est pas exact) a injecter dans l´équation de Newton
Un truc qui gere les virages correctement !
En faisant intervenir :
- angle des pneus avant
- coefficient de friction de la route (si on tourne sur de la glace, ça part a l´extérieur)
Si qq un peut me donner un F6 qui gere cela, et me donne une trajectoire correcte de virage, je lui en serait reconnaissant !!
Car pour le moment, les tests que je fais : soit la voiture "tourne sur de la glace", soit je perds toute ma vitesse quand je tourne !!
Si qq un a un truc sympa, je prends !!
![]()
ta formulation de F2 est étrange, a priori c´est la force de gravité qui te fait aller plus vite en descente et F2 ne fait que moins s´y opposer en descente que sur du plat.
Pour ton problème de F6, la force qu´il te manque c´est les frottement solide entre les pneus et la route.
En gros tu peut modéliser ça par une force qui s´oppose à la vitesse du bas des pneus par rapport à la route : en ligne droite à vitesse constante (pour la voiture), cette vitesse est nulle car le bas du pneu en contact avec la route avance à la vitesse de la route. Donc F6 est nulle.
Par contre, si tu freine, la roue arrète de tourner (supposons) et donc le bas du pneu avance par rapport à la route. Et donc F6 qui s´y oppose est situé vers l´arrière et vient se rajouter à F4 pour arreter le véhicule (si tu ne freine pas, mais que les roues sont libres, il n´y a que F4 qui arrète la voiture (sans compter le frein moteur...)).
Et enfin, dans le cas virage, là on peut supposer que la vitesse de rotation des roues reste constante, mais celles-ci ne sont plus paralèlles à la trajectoire de la voiture, et il y a donc une force qui s´exerce sur la voiture vers l´intérieur du virage. C´est cette force qui empêche la voiture de déraper complétement.
Et bien sur, cette force dépend d´un coefficient k qui est quasiment nulle sur de la glace et on retrouve bien le comportement (la voiture tourne sur de la glace) si on le néglige.
Je vais peut être dire une connerie mais mes souvenirs de physique remontent un peu loin alors hein excusez moi d´avance ^^... la fameuse F6 ca ne serait pas la force centrifuge ?
non ; la force centrifuge, ça n´existe pas ...
En fait c´est un effet que l´on ressent lorsque l´on est dans un référentiel non galiléen i.e. un référentiel qui est accéléré par rapport à un référentiel que l´on considérera en translation.
Mais si on travaille dans un référentiel galiléen (et là, on suppose que c´est le cas pour la route), on n´a pas à se soucier de la "force" centrifuge.
Pour être clair : la force centrifuge existe, et c´est bien une force. Mais elle n´existe que dans des référentiels non galiléen, et elle n´a pas de "sens" physique, si ce n´est que de rendre compte correctement du mouvement d´objet dans ces référentiels.
salut dnob700! tu te souviens de mon programme de calcul d´orbite? (le topic ou je faisais une crise de nerf je croit.) il exploite a fond la physique et donne des resultats presques justes...
Finalement, j´ai réussi à la programmé en utilisant la formule :
acc_gravitationnel# = 9.81
(((-(0.5))*(acc_gravitationnel#)*(lt#)^2)/10000000
000000)
Le /10000000000 est simplement pour ralentir le mouvement, car c´est trop rapide sinon et le lt# est le temps depuis le début.
C´est qu´une gravité pour l´instant, je vais tenter de faire un rebond d´une balle, c´est ma prochaine étape.
Dnob > pour mon F6, tu n´aurais une équation a me proposer ?
si u est le vecteur qui dirige le mouvement de la voiture (donc pas forcement l´axe des roue, ni même l´axe de la voiture, mais bien l´axe de la trajectoire).
Alors F6= - |N| * f
ou |N| est la norme du vecteur N qui est la composante normale de la réaction du sol sur la voiture (dans la plupart des cas (si la voiture ne saute pas) N=-mg et donc |N|=m|g|) et f est un coefficient qui dépend du sol, du pneu, de la température etc.
Il vaut 0 sur de la glace (enfin, si ça glisse parfaitement) et sinon c´est générallement entre 0.5 et 0.8 (à condition qu´il y ait bien, un frotement, ce qui n´arrive pas dans le cas général où on roule en ligne droite).
Ce qui est interessant c´est que F6 ne dépend ni de la vitesse de la voiture ni de la "vitesse" du frottement (sauf à faible vitesse ou F6 est plus petite que le frottement qui est de toute manière nulle si la voiture est à l´arret ou à régime constant).
Pour résumer :
Si il n´y a pas de glissement entre les roues et le sol (roue libre dans l´axe de la route) alors F6=0 sinon, F6=-f*m*g*u ou u est un vecteur qui dirige le sens du glissement de la roue sur le sol.