Simulance, un simulateur de lancé d'objets

Soyez le premier à donner votre avis sur cette source.

Vue 9 609 fois - Téléchargée 676 fois

Description

SimuLance est un simulateur de lancer d'objet.
Ce simulateur néglige les frottements de l'air (car actuellement je ne sais pas encore comment mettre cette option en place). Il est fort possible qu'il existe une meilleure méthode pour créer un simulateur du même genre, je l'ai fait à partir de mes connaissances actuelles (je viens juste d'avoir le cours: il y a une semaine).
Sinon, j'espère que vous vous amuserez bien.
L'emplacement, la direction et la norme du lancer peuvent être modifiés à la souris.
A propos un bug a été repéré lorsque la norme du vecteur vitesse est modifié à la souris et vaut à peu près 0 ou 180°. Je ne sais actuellement pas comment corriger ce bug que je pense mineur vu qu'il n'influe pas sur la fonctionnement du programme.
Bons essais...

Source / Exemple :


// Cf. ZIP

Conclusion :


Tout commentaires, avis, questions... sont les bienvenus...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
Bonjour,

Il est vrai que l'utilisation de la formule "Py(t) = Py(0) + Vy(0)*t + 1/2*g*t" pour calculer la vitesse en y est bien plus judicieuse que le recours à l'énergie cinétique.

Je ne l'avais pas encore vue lors de l'implémentation de ce programme mais c'est vrai que c'est une méthode beaucoup plus juste, efficace et rapide que celle implémentée dans le programme (la preuve, les différences entre les deux courbes obtenues si l'on implémente l'une ou l'autre des méthode).

A bientôt...
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
28 octobre 2008

Je pense serieusement que ma formule est bonne.

Prenons la formule py(t)=py(0)+t*vy(0)+gt^2*t^2
Lorsque t augmente, py(0) est constant, t*vy(0) augmente(puisque vy(0)>0) et gt^2*t^2 augmente aussi, donc vy(t) ne fait qu'augmenter, ce qui veut dire que le solide ne vas pas décrire de cloche mais va s'élever dans les airs.

Après si vous n'êtes pas convaincus il faut intégrer deux fois l'accélération qui n'est autre que la dérivée seconde de la position, afin d'obtenir cette expression; voir les cours de terminale S sur les équations horaires.

dans ton cas, il te suffit de faire une fonction Y(float x, float V){return Y0+V*x-0.5*g*x² ;} voilà

ensuite tu fait ta boucle normal et tu affiche à chaque fois le solide aux coordonnées (X, Y(X)).
Messages postés
557
Date d'inscription
dimanche 25 septembre 2005
Statut
Membre
Dernière intervention
10 mai 2014
2
Bonjour ACX01B et MAL_AU_DOS,
laquelle de ces deux expressions est vraie (est à utiliser)?

py(t) = py(0) + t.vy(0) + g.t^2/2
ou
Py(t) = Py(0) + Vy(0)*t - 0.5g*t^2

la seule différence est un -.

Merci d'avance...
A bientôt...
Messages postés
39
Date d'inscription
samedi 3 juin 2006
Statut
Membre
Dernière intervention
28 octobre 2008

heu en réalité je crois plutôt que la formule c'est:

Py(t) = Py(0) + Vy(0)*t - 0.5g*t^2

en effet selon la formule de ACX01B le pauvre solide ne redescendrait pas puisque quand t augmente la position de Py(t) ne peut qu'augmenter.

Joli prog A++
Messages postés
280
Date d'inscription
dimanche 7 septembre 2003
Statut
Membre
Dernière intervention
8 juillet 2014
4
salut j'ai l'impression que tu n'as pas vu la formule

py(t) = py(0) + t.vy(0) + g.t^2/2
py(t) c'est le position en y de l'objet à l'instant t

oui ton programme est faut car tu n'as pas utilisé cette formule (qui est la seule qui soit bonne) mais puisque ton pas de discrétisation est petit ça ne se voit pas

après il faut gérer le rebond là ça se complique hé oui
tu l'auras deviné ils faut résoudre l'équation py(x) = 0
et changer le signe de vy(x) ainsi qu'appliquer une petit coefficient de restitution (inférieur à 1)
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.