Programmer une balle qui simule ...
Résolu/Fermé
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
-
15 déc. 2009 à 04:17
airman4 Messages postés 18 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 1 février 2010 - 21 déc. 2009 à 14:50
airman4 Messages postés 18 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 1 février 2010 - 21 déc. 2009 à 14:50
A voir également:
- Programmer une balle qui simule ...
- Programmer sms - Guide
- Programmer mail gmail - Guide
- Foot balle - Guide
- Programmer un mail outlook - Guide
7 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 déc. 2009 à 08:51
15 déc. 2009 à 08:51
J'ai peut-être pas compris le principe du truc mais je vois pas ce qu'il y a de sorcier là-dedans...
Il suffit de manipuler deux ou trois formules de physique (Newton principalement) pour calculer tes fonctions x(t), y(t) (voir z(t) si tu le fais en 3D) et synchroniser le temps t avec ton horloge.
Éventuellement on peux complexifier le problème en traitant les rebonds de la balle mais ça reste avant tout un problème de physique, côté informatique c'est bidon...
Il suffit de manipuler deux ou trois formules de physique (Newton principalement) pour calculer tes fonctions x(t), y(t) (voir z(t) si tu le fais en 3D) et synchroniser le temps t avec ton horloge.
Éventuellement on peux complexifier le problème en traitant les rebonds de la balle mais ça reste avant tout un problème de physique, côté informatique c'est bidon...
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 déc. 2009 à 10:01
15 déc. 2009 à 10:01
En effet la remarque de micro gravité est très pertinante !
airman4, parles-tu de pesanteur ou d'apesanteur ?
Quand tu parles d'espace, c'est l'espace de maths (Oxyz) ou l'espace des astronautes ?
Selon, le problème est radicalement différent !
Même si je maintiens que ça reste avant tout un problème de physique et que l'implémentation informatique n'est pas le vrai problème.
airman4, parles-tu de pesanteur ou d'apesanteur ?
Quand tu parles d'espace, c'est l'espace de maths (Oxyz) ou l'espace des astronautes ?
Selon, le problème est radicalement différent !
Même si je maintiens que ça reste avant tout un problème de physique et que l'implémentation informatique n'est pas le vrai problème.
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
15 déc. 2009 à 18:46
15 déc. 2009 à 18:46
Oui je parle de pesanteur normale dans l'espace terrestre.
pour l'instant , on va eviter l'espace ^^
donc c'est cool si c'est amplement faisable en informatique alors!!
pour l'instant , on va eviter l'espace ^^
donc c'est cool si c'est amplement faisable en informatique alors!!
Pascattack
Messages postés
689
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
9 juin 2016
57
15 déc. 2009 à 17:26
15 déc. 2009 à 17:26
Comme je disait.... Blender peut etre bon pour toi (faut juste savoir sen servir) il peut gerer la physique comme en temps reel tu peut regler la masse la force gravitationnel et encore mieu... Aissai et tu vera...
"tres complex"
"tres complex"
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
15 déc. 2009 à 18:51
15 déc. 2009 à 18:51
Merci bien ! Pascattack, ok je prend blender^^
je vais voir ce que je pourrai faire avec!!
en plus c'est gratuit, donc deja on paye pas deja le moteur, ben c'est genial merci!.
je vais voir ce que je pourrai faire avec!!
en plus c'est gratuit, donc deja on paye pas deja le moteur, ben c'est genial merci!.
Pascattack
Messages postés
689
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
9 juin 2016
57
15 déc. 2009 à 04:58
15 déc. 2009 à 04:58
Salut
si tu parle de faire une animation, blender peut etre fort utile pour toi... mais si c'est autre chose ... alors la .. eclairci moi ... parce que je voit pas !!!
Lien pour Blender : https://www.blender.org/
Bonne Chance ! :)
si tu parle de faire une animation, blender peut etre fort utile pour toi... mais si c'est autre chose ... alors la .. eclairci moi ... parce que je voit pas !!!
Lien pour Blender : https://www.blender.org/
Bonne Chance ! :)
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
15 déc. 2009 à 05:35
15 déc. 2009 à 05:35
OUPS!!!
mille pardons, j'ai oublié de preciser!!
une balle qui agit en temps reel bien entendu.
c'est un projet "secret" que j'ai pas encore deposé et protegé donc desolé je peux pas trop en parler ni diffuser mes travaux preparatoires.
en tout cas faut que l'animation soit du temps reel ,juste que quand on la lance , elle retombe selon les lois d'apesanteur ,bref comme dans la realité .
bref c'est comme si ce programme/moteur que je veux developper permettrait a la personne de lancer en temps reel une balle avec des trajectoires proches de ce qui se passe dans la realité
mille pardons, j'ai oublié de preciser!!
une balle qui agit en temps reel bien entendu.
c'est un projet "secret" que j'ai pas encore deposé et protegé donc desolé je peux pas trop en parler ni diffuser mes travaux preparatoires.
en tout cas faut que l'animation soit du temps reel ,juste que quand on la lance , elle retombe selon les lois d'apesanteur ,bref comme dans la realité .
bref c'est comme si ce programme/moteur que je veux developper permettrait a la personne de lancer en temps reel une balle avec des trajectoires proches de ce qui se passe dans la realité
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est simple : une balle lâchée en apesanteur ne "tombe" pas. pour qu'elle tombe, il faudrait qu'elle soit en "pesanteur".
gg
gg
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
15 déc. 2009 à 18:44
15 déc. 2009 à 18:44
ah ok
desolé pour la confusion
en tout cas ,c'est ca , c'est une balle normale donc , en pesanteur alors donc.
merci.
desolé pour la confusion
en tout cas ,c'est ca , c'est une balle normale donc , en pesanteur alors donc.
merci.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 déc. 2009 à 20:59
15 déc. 2009 à 20:59
Si tu te limites à de la 2D, Blender n'est peut-être pas tout à fait adapté, c'est de la trop grosse artillerie pour un objectif aussi simple.
Regardes juste pour voir (sans engagement) WinAnim, c'est un des codes d'exemple fourni avec Dev-C++
Tu auras juste à le compiler et le tester...
C'est un programme qui fait rebondir une balle dans sa fenêtre, et tu verras que le code est très léger (200 lignes à tout casser) et facilement modifiable !
En rajoutant quelques contraintes physique et temporelle au mouvement de la balle tu devrais rapidement obtenir ce que tu veux (du moins de ce que t'en a dit)
Regardes juste pour voir (sans engagement) WinAnim, c'est un des codes d'exemple fourni avec Dev-C++
Tu auras juste à le compiler et le tester...
C'est un programme qui fait rebondir une balle dans sa fenêtre, et tu verras que le code est très léger (200 lignes à tout casser) et facilement modifiable !
En rajoutant quelques contraintes physique et temporelle au mouvement de la balle tu devrais rapidement obtenir ce que tu veux (du moins de ce que t'en a dit)
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
19 déc. 2009 à 13:32
19 déc. 2009 à 13:32
Voici un code en Java (mais on pourrait le faire avec d'autres langages) qui permet de faire à peu près ce que tu veux à condition de disposer des méthodes getTime et dessinerBille :
Cette simulation est une approximation de ce qui se passe réellement, mais plus tu actualiseras souvent les données plus l'approximation sera bonne.
Ce qu'il faut faire dans actualiser c'est donner des informations sur le temps, et sur l'accélération du mobile a=m*sommeForce (la somme des forces qui s'applique à ce moment là sur le mobile)
Voici un exemple de chute libre :
Je fais tomber une bille de 20g d'une altitude z=12m sur la verticale x=5m avec une vitesse initiale nulle.
J'arrête le programme quand la bille a touchée le sol.
Remarque sur les rebonds (on considère les angles du vecteur vitesse du mobile)
Soit un obstacle incliné d'un angle A et considéré comme plat à proximité du point de contact.
Si le mobile percute cette surface sur le point de contact avec un angle B, il rebondira sur l'obstacle et l'angle sortant sera de 2B-A.
Le rebond provoque également une baisse de l'amplitude du vecteur vitesse dépendant des matériaux du mobile et de l'obstacle.
On pourrait négliger cette baisse d'amplitude si on considère que le mobile et la surface sont parfaitement lisses au niveau du point de contact.
public class Vecteur { private double x,y,z; public enum Coordonee{X,Y,Z}; Vecteur(double x, double y, double z); Vecteur(Vecteur v); public void ajouter(double x, doube y, double z); publiv void ajouter(Vecteur v); public double get(Coordonee); public void set(Coordonee, double d); public void set(Vecteur v); } public class Mobile { private double t; private Vecteur p,v,a; public enum Donnee {Position, Vitesse, Acceleration}; Mobile(double t, Vecteur p, Vecteur v, Vecteur a); Mobile(Mobile m); private double CalculP(Coordonee c, double d) { return d*(v.get(c)+d*a.get(c)); } private double CalculV(Coordonee c, double d) { return d*a.get(c); } public void actualiser(double t, Vecteur a) { double delta=t-this.t; p.ajouter(calculP(Vecteur.X,delta),calculP(Vecteur.Y,delta),calculP(Vecteur.Z,delta)); v.ajouter(calculV(Vecteur.X,delta),calculV(Vecteur.Y,delta),calculV(Vecteur.Z,delta)); this.a.set(a); this.t=t; } public Vecteur get(Donnee); }
Cette simulation est une approximation de ce qui se passe réellement, mais plus tu actualiseras souvent les données plus l'approximation sera bonne.
Ce qu'il faut faire dans actualiser c'est donner des informations sur le temps, et sur l'accélération du mobile a=m*sommeForce (la somme des forces qui s'applique à ce moment là sur le mobile)
Voici un exemple de chute libre :
Je fais tomber une bille de 20g d'une altitude z=12m sur la verticale x=5m avec une vitesse initiale nulle.
J'arrête le programme quand la bille a touchée le sol.
public class ChuteLibre { public static Vecteur poids(double masse) { return new Vecteur(0,0,-9.81*masse); } public static void Main(String args[]) { final Vecteur poidsBille=poids(20); Mobile bille=new Mobile(getTime(),new Vecteur(5,0,12),new Vecteur(0,0,0),poidsBille); while (bille.get(Mobile.Position).get(Z)>=0) { dessinerBille(bille.get(Etat.Position)); bille.actualiser(getTime(),poids); } bille.actualiser(getTime(),newVecteur(0,0,0)); dessinerBille(bille.get(Etat.Position)); } }
Remarque sur les rebonds (on considère les angles du vecteur vitesse du mobile)
Soit un obstacle incliné d'un angle A et considéré comme plat à proximité du point de contact.
Si le mobile percute cette surface sur le point de contact avec un angle B, il rebondira sur l'obstacle et l'angle sortant sera de 2B-A.
Le rebond provoque également une baisse de l'amplitude du vecteur vitesse dépendant des matériaux du mobile et de l'obstacle.
On pourrait négliger cette baisse d'amplitude si on considère que le mobile et la surface sont parfaitement lisses au niveau du point de contact.
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
21 déc. 2009 à 05:28
21 déc. 2009 à 05:28
Wow!
je m'attendais pas a tout ca, bref merci beaucoup vraiment, je vais voir tout ca avec mon frere.
merci pour ton temps!
je m'attendais pas a tout ca, bref merci beaucoup vraiment, je vais voir tout ca avec mon frere.
merci pour ton temps!
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
21 déc. 2009 à 11:41
21 déc. 2009 à 11:41
D'ailleurs en me relisant j'ai vu une erreur de frappe dans la classe Mobile :
private double CalculP(Coordonee c, double d)
{ return d*(v.get(c)+d*a.get(c)/2); }
private double CalculP(Coordonee c, double d)
{ return d*(v.get(c)+d*a.get(c)/2); }
airman4
Messages postés
18
Date d'inscription
lundi 14 décembre 2009
Statut
Membre
Dernière intervention
1 février 2010
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
21 déc. 2009 à 14:50
21 déc. 2009 à 14:50
ok! merci bien!
15 déc. 2009 à 18:40
l'aspect sera en 2d cela dit donc ca risque d'etre encore plus simple! cool alors.
donc les rebonds peuvent complexifier la tache, ok merci bien.
Malheursement comme je pense le vendre ,je peux pas encore en dire plus, j'ai pas deposé l'idée comme je l'ai dit.
Faut que je vois aussi si je vais pas devoir me constituer une equipe , seul hic je prends un risque et j'ai pas envie d'entrainer trop de gens dedans (pas sur que a marche et que ca se vende)
desolé d'etre mysterieux comme ca mais merci en tout cas.