Rebond par calcul d'angle

Signaler
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013
-
Bonjour je cherche a faire rebondir un objet sur des surfaces mais en calculant avec les angles donc pas avec un truc du genre
if x > 400 dx*=-1;
if x < 10 dx =*-1;

Mais plutot si un objet rentre en collision avec un objet d'angle A1 sous un angle A2 quel est son nouvel angle.

J'ai commencé a me faire une base pour les surfaces planes des cotés mais c'est un algo bourré de tests et de corrections (fait a tatons) donc horrible et je commence a peter un cable pour les surfaces inclinées et il me reste les collisions entre 2 objets en mouvement.

Si quelqu'un a un exemple ou le titre du cours de meca que je cherche sous google (j'ai cherché avec les verteurs mais generalement c'est plus avec des coordonnées x y que les angles et je trouve chiant d avoir a les reconvertir en coordonnées rectangulaire pour reobtenir un angle)

9 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Faut pas utiliser les angles, mais seulement vecteurs et produits scalaires.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

En fait j'ai trouvé pour les surfaces planes donc c'est possible avec les angles voila ma fonction (trouvé a tatons)


double changAng(double angle0,double angle) {

    double A = 2* angle0 - angle;

    if (A < 0) { A = A + 2 * PI ; }

    return A;

}


On fournis angle0 qui represente l'angle de la surface (0 pour un plan
horizontal, 90 pour un plan vertical, etc ...) et l'angle actuel. La
fonction retourne le nouvel angle de rebond.


Par contre il me manque pour les objet en mouvement et la je ne sais pas si c'est possible sans passer par les scalaires ??
Messages postés
56
Date d'inscription
dimanche 13 novembre 2005
Statut
Membre
Dernière intervention
11 juillet 2006

sa resemble vaguement a la formule de la refraction pour le raycasting. donc comme c'est un sujet qui est pas mal expliquer sur le net tu peu regarder par la ;)
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Bah, pour l'objet1, tu inverses la composante v de la vitesse relative de l'objet1/objet2 dans la base (u,v) où v est la normale à la surface de collision.
Et voilà ! En une phrase. Sympa nan ?
Faut lire la phrase à l'envers pour comprendre.
Idem pour l'objet2 (pas la peine de recalculer le base de passage globale -> (u,v)).
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Et il faut pas prendre en compte les forces ?

Si un objet a plus d'energie que l'autre qu'est ce qui se passe, si un
objet en mouvement entre en collision avec un objet statique il
s'arrette et transmet son energie au corps statique et c'est le corps2
qui se deplace apres.

J'ai vu une source de simulation de billard sur ce site mais c'est des
formule de "precalcul" pour calculer les futures collisions et comme
moi je fait ca en temps reel je bloque encore.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Désolé ,je viens de relire ton post en faisant plus attention et ca
pourrait m'interesser tu aurais pas les formules de math pour

v est la normale à la surface de collision ?

et la vitesse relative de l'objet1/objet2 ?
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Déja fais-tu de la 3D ou de la 2D ?
Tes solides en mouvement peuvent-ils avoir des formes quelconques ?
Peuvent-ils tourner sur eux-mêmes ? (ça parait con mais ça complique sensiblement les calculs)
En gros quelles hypothèses veux-tu faire ?
Des techniques de calculs physiques, il y en un paquet !
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

C'est en 2D, je refait le jeu de globulos en c++ jouable en local
(facilement trouvable sur google en flash jouable sur leur serveur).

Pour simplifier les "globule" ne sont (mathematiquement) que des
cercles et pour le moment leurs deplacements se font a partir d'un
angle et d'un vecteur vitesse (c'est fonction du temps donc je pense
pas qu'on puisse appeller ca energie) et une constante pour les pertes
par frottements.


En fait je sais meme pas si je m'y prend correctement, ceux que voit bossent avec les moments et les energies.


Deja je fait baisser une vitesse avec une force (frottement qui diminue
vitesse) et physiquement c'est pas trop realiste c'est plutot du
bricolage.
Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

Pour ceux qui cherchent aussi je suis tombé sur

http://forum.games-creators.org/archive/index.php/t-2551.html

mais surtout sur

http://www.planete-sciences.org/robot/wikibot/index.php/Collision ( tres interessant)