1

Voilà le problème, on m'a demandé si il était possible (simplement j'entends) de reproduire le mouvement d'une étoile de sheriff dans un cadre. Je m'explique, l'étoile tourne sur elle même, et doit rebondir sur les bords (en restant à l'intérieur dudit cadre) à partir d'un mouvement (direction, vitesse, angle et vitesse de rotation) existe-t-il un moyen simple de calculer tout ça (sans pour autant être obligé de se cantonner aux rebonds d'un disque...)

vala, donc si qqn à l'éclair de génie, parcque moi je sèche (ou alors faut se coltiner tout le modèle physique mais ça le fera pas)
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

2

Sur gamasutra ils avaient un article très intéressant sur la physique de contact... je retrouve ça...

3

mici
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

4

Hum voilà le lien (http://www.gamasutra.com/resource_guide/20030121/kennedy_01.shtml) mais deux avertissements :
- il te faut un compte (gratuit mais c'est chiant d'inventer sans cesse de nouveaux emails bidon cheeky ). Note que avec certains navigateurs, si tu stoppes le chargement de la page, la redirection foire et tu peux lire l'article sans compte grin
- bah ça explique comment implémenter le physique de contact, et ça détailles les équations. Mais les équations dont dedans quand même. Enfin, tu voudras ptet faire autrement mais tu perds rien à jeter un oeil.

[edit: apparemment tu as la version imprimable, moins jolie, mais qui vérifie pas le login, à cette adresse : http://www.gamasutra.com/resource_guide/20030121/kennedy_pfv.htm]

5

ah bah si ça passe, merci smile
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

6

Tout d'abord, je te déconseille très fortement de faire intervenir les forces de contact.
En effet, lors de son mouvement à l'intérieur du cadre, l'étoile n'est soumise à aucune force, puis lors du contact, on a brutalement une force (de valeur inconnue) qui disparaît aussitôt.
Comme d'habitude, il faut jouer avec la conservation de certaines quantités, en l'occurence l'énergie cinétique (de translation et de rotation) de l'étoile, puisque la quantité de mouvement et le moment cinétique ne sont pas conservés à cause des chocs.
A ce propos, je suppose qu'il s'agit bien d'un choc parfaitement élastique ...
Dans le cas d'un choc mou, la vitesse normale au plan de contact est simplement multipliée à chaque choc par une constante e comprise entre 0 (choc parfaitement mou) et 1 (choc parfaitement élastique), ce qui aura pour effet de faire perdre de l'énergie cinétique à l'étoile, et donc de considérablement la ralentir jusqu'à l'arrêt presque total, mais je doute que ce soit ce que tu cherches.

Tout d'abord, la première difficulté à mes yeux, d'ordre informatique, est la détermination de la configuration exacte de l'étoile par rapport au bord au moment du contact.
On peut sans problème laisser l'étoile s'approcher du bord jusqu'à une distance égale au rayon du cercle circonscrit en un seul pas de calcul, mais ensuite, à cause de la rotation de l'étoile, la détermination du moment exact du contact avec une des pointes me semble un problème délicat à traiter informatiquement (du moins du point de vue de mes connaissances limitées, peut-être est-ce trivial pour un informaticien).
Analytiquement, la distance entre une pointe et un bord est la somme d'un terme linéaire avec le temps (translation du centre de masse de l'étoile) et d'un terme sinusoïdal (rotation de l'étoile).
On peut donc soit utiliser une formulation intégrale et utilisée cette expression analytique pour déterminer en un seul pas de calcul la configuration de l'étoile au moment du contact, soit utiliser une formulation différentielle et travailler par petits incréments de la configuration de l'étoile jusqu'à établir le contact (méthode souvent utilisée en informatique pour détecter les contact, me trompe-je ?).

Vient ensuite le moment du choc proprement dit.
Juste avant le contact, l'étoile (ou plutôt son centre de masse) a une vitesse de translation v, soit une énergie cinétique de translation Ectrans=1/2*Mv², et une vitesse de rotation w (c'est censé représenter un omega minuscule hehe), soit une énergie cinétique de rotation Ecrot=1/2*Jw².
Je rappelle que l'énergie cinétique totale Ec0=Ectrans+Ecrot est une constante tout au long du mouvement, et tout se fera grâce à elle.
Au moment du contact, la vitesse instantanée vM de la pointe M qui touche (somme vectorielle de la vitesse de translation et de la vitesse de rotation multipliée par le rayon OM de l'étoile) change de direction et sans doute de norme, ce qui modifie par conséquent la vitesse de rotation w et la vitesse de translation v.
Il suffit donc d'établir l'équation décrivant comment est affectée vM pour trouver, grâce à la seconde équation qu'est la conservation de Ec0, l'expression des deux inconnues v et w.
Cependant, je ne connais pas cette équation (d'où mon sans doute à propos du changement de norme de vM), surtout qu'elle dépend des hypothèses utilisées pour le contact (frottement sans glissement ? glissement sans frottement ? autre ?), et que là je ne suis vraiment plus assez éveillé pour faire quelque chose de correct.
J'essaierai donc de terminer ça demain ...

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

7

En même temps Ethaniel tu lis l'article dont j'ai mis le lien t'as tout d'expliqué dedans.

8

pour détecter la collision, tu fais un gros OR entre tes murs et ton sprite, et tu l'as ton résultat...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

9

@ spectras : Oui, sans doute.
Mais bon, comme je ne touche jamais à de l'anglais après 22h (l'écran fait déjà bien assez mal aux yeux comme ça), je n'ai pas vu quel raisonnement a été utilisé, ni jusqu'à quel point le développement a été poussé (mais bon, sûrement plus que le mien vu la longueur de l'article hehe).

@ vince : Mais si le pas d'incrémentation est trop grand (objet carrément incrusté dans le mur hehe), l'algorithme 'classique' en Info prévoit-il de revenir en arrière pour affiner le point et la config de contact ?

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

10

si passé 22h t'es aproductif, faut aller dormir happy
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

11

C'est surtout que je n'ai plus envie de me casser la tête à lire de l'anglais, surtout lorsqu'il s'agit de vocabulaire un peu technique ...
Oui, je suis une quiche (lorraine) en langues, et alors hehe ?

Et puis bon, j'espère ne pas avoir été totalement aproductif avec ma dithyrambe du ./6 ... ce sera toujours ça de moins à faire demain hehe !

@++
avatar
Je ne suis pas développeur Java : je suis artiste Java.
Ce que l’on conçoit bien s’énonce clairement, / Et le code pour l’écrire arrive aisément.
Hâtez-vous lentement ; toujours, avec méthode, / Vingt fois dans l’IDE travaillez votre code.
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer.
You don't use science to show that you're right, you use science to become right.

12

heu je n'ai lu ni le post d'Ethaniel (désolé mais heu un peu long, je ferai ca plus tard) ni l'article
mais heu je en vois pas trop ce qu'il y a de compliqué là dedans

ton etoile de sherif, tu la réduit aux 6 (?) points des extrémités des branches
et ensuite pour les collisions, comme c'est en interieur, il suffit de faire un test de collion avec chacun des 6 (?) points, de la même maniere que ca aurait été fait avec un disque (ou on ne teste que le centre du disque, en réduisant la taille du cadre pour simuler le rayon du disque)


ou alors j'ai rien compris et j'aurais mieux fait de tout lire
avatar

13

tester la collision ça je sais faire, c'est savoir comment repart l'étoile après qui me pose problème...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

14

je verrais ca un peu comme ca :
ben le point qui entre en contact devient un pivot, et toute l'etoile tourne autour de ce pivot, jusqu'à ce qu'un second point entre en contact
là tu as un segment de contact
moi je verrais bien un rebond tout bete, on fait une symetrie de la vitesse au centre de gravité, l'etoile repart
et pour la rotation, l'etoile concerve son moment cinetique

enfin, pour la rotation, ca ne prend pas en compte la modification du moment cinétique au moment de la rotation auton d'un des bord
là il faudrait pendre en compte son accélération
(si on balance l'etoile sans rotation, apres le choc elle se mettra à tourner)
avatar

15

Si je me rappelle bien de mes cours de physique, on n'est pas capable de prédire la direction dans laquelle l'étoile repart. Du moins pas que en connaissant moment cinétique et énergie cinétique (deux équations de conservation, donc, qui ne permettent que de déduire les *normes* des vitesses ultérieures du mur et de la balle). Mais ptet que mes connaissances physiques sont trop faibles.
avatar
I'm on a boat motherfucker, don't you ever forget

16

en decomposant ca en phasescomme je l'ai fait, ca doit etre tout à fait possible de prédire, enfin j'ai fait ca un peu intuitivement
avatar

17

Nu :
ben le point qui entre en contact devient un pivot, et toute l'etoile tourne autour de ce pivot, jusqu'à ce qu'un second point entre en contact

Ca ça me paraît physiquement faux : le premier point arrive avec une certaine vitesse, il ne va pas attendre gentiment contre le mur qu'un deuxième point arrive, il va commencer à rebondir.
avatar
I'm on a boat motherfucker, don't you ever forget

18

Personnellement, je pense en fait qu'on est obligé de considèrer que la pointe de l'étoile n'est pas ponctuelle, mais qu'on doit lui donner une forme (un petit cercle, par exemple).
avatar
I'm on a boat motherfucker, don't you ever forget

19

je ne sais pas si ca changerait beaucoup de chose au niveau du resultat final
(par contre là ca alourdit considérablement les calculs sick)
avatar

20

spectras :
- il te faut un compte (gratuit mais c'est chiant d'inventer sans cesse de nouveaux emails bidon cheeky ).

http://www.bugmenot.com/

21

L' étoile, ca revient simplement à un système de 5 particules avec une contrainte en plus (le fait qu'elles soient liées et masse répartie)
Et le but est, je pense, d'avoir une approximation et non pas quelquechose d'exact.

22

même si c'est pas réaliste faut que ça paraisse vraisemblable...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

23

Si tu veux plus de réalisme, tu ajoutes des contraintes sur les particules (que ce ne soient plus des ponctuelles, mais des sphères etc.)

24

je ne veux pas de réalisme à tout prix... je cherche le plus simple, mais si je traite ça comme une boule et que l'étoile fait demitour sans changer de vitesse de rotation et sans qu'aucun des 5 points n'ait réellement touché un mur, ça le fait pas...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

25

Utilise donc des particules ponctuelles :happy
En plus, c'est assez simple a gérer...

26

En même temps y'a toujours les explications dans l'article de gamasutra, et ils arrivent ç gérer des objets comme une voiture ou un pantin articulé. Ptêt que ça vaudrait le coup de le lire plus en détail ? smile
D'autant plus qu'ils font le raisonnement qui va avec et détaillent les équations au fur et à mesure.

27

nEUrOO > Au risque de me répéter, on ne peut pas considérer des particules ponctuelles lorsqu'on étudie des chocs. C'est bien pour ça qu'on a inventé le modèle des sphères dures ...
avatar
I'm on a boat motherfucker, don't you ever forget

28

bah vi, un élève en école de méca devrait savoir ça roll
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

29

vince > C'est pour s=43290 ?
avatar
I'm on a boat motherfucker, don't you ever forget

30

./29> Oui