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
l'apeusanteur dans l'espace quoi.

OUi ,j'aimerai savoir si un noob comme moi peut le faire ou est ce trop complexe?
c'est à dire simuler une balle soumise à la force d'attraction , pas un truc preprogrammé , scripté.
Y a til des moteurs qui peuvent aider a faire cela ou c'est complexe? Y a til des bouqins a consulter pour m'y aider ou pas?

j'en ai parlé a mon frere qui est programmeur logiciel et il m'a repondu que ca pourrait etre dur à faire, dois je vraiment abandonner cette idée?
A voir également:

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
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...
4
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:40
Ok! merci beaucoup !!!
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.
0
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
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.
1
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
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!!
0
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
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"
1
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
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!.
0
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
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 ! :)
0
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
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é
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
micro gravité
15 déc. 2009 à 08:57
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
0
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
ah ok
desolé pour la confusion
en tout cas ,c'est ca , c'est une balle normale donc , en pesanteur alors donc.
merci.
0
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
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)
0
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
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 :

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.
0
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
Wow!
je m'attendais pas a tout ca, bref merci beaucoup vraiment, je vais voir tout ca avec mon frere.
merci pour ton temps!
0
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
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); }
0
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
ok! merci bien!
0