Partage
  • Partager sur Facebook
  • Partager sur Twitter

Se déplacer sur de la glace !

30 octobre 2014 à 13:36:04

Bonjour !

J'essaie de programmer un petit shoot them up multidirectionnel. Pour ce qui concerne le rendu physique, imaginez une sorte de palet qui peut guider sa trajectoire sur une patinoire ! :honte: (Pour faciliter les contrôles, je n'exclue donc pas quelques frottements)

Je coince sur le calcule de la trajectoire lorsque ce palet se met à tourner. Avec la seule force de l'impulsion, il suivra simplement une trajectoire circulaire mais je cherche à modéliser une sorte de force centrifuge lui permettant de "dériver" en utilisant les lois de la physique et non des bidouillages maison ! ^^

Voici un exemple de ce que je souhaite approcher : http://www.chromeexperiments.com/detail/starris/?f=

Merci tout plein !

-
Edité par Tiramitsu 30 octobre 2014 à 13:38:02

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 14:31:28

Salut, la pseudo-force centrifuge va apparaître toute seule pour peu que tu utilises effectivement des lois physiques pour coder le reste du déplacement du palet. La pseudo-force centrifuge apparaît en fait lorsque l'on passe d'un repère galiléen où la PFD s'applique à un repère accéléré par rapport à ce dit repère (exemple, dans un repère attaché à une voiture qui tourne).

La question à ce poser, c'est donc comment tu codes le déplacement du palet sous "l'impulsion", et surtout, qu'est-ce que tu appelles "impulsion" qui n'est pas un terme physique précis...

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 14:55:37

Par impulsion j'entend une force interne au palet étant fixe par rapport à son repère local. Le problême vient peut être du fait que je le confond avec le vecteur vitesse ?

Voici comment j'ai codé ça dans le cas d'un mouvement positif :

dv = a * dt

velocity += dv

x = x + velocity * dt * cos(θ)

y = y + velocity * dt * sin(θ)

Je devrais donc plutôt créer une force impulsive ET un vecteur vitesse indépendant ?

Il me semble que le vecteur vitesse est toujours tangent à la trajectoire mais je ne sais pas du coup s'il sera toujours colinéaire au vecteur d'impulsion (pour avoir cette pseudo force centrifuge, j'en déduis que non ?)

-
Edité par Tiramitsu 30 octobre 2014 à 15:05:34

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 15:04:18

Tiramitsu a écrit:

Par impulsion j'entend une force interne au palet étant fixe par rapport à son repère local. Le problême vient peut être du fait que je le confond avec le vecteur vitesse ?

Ça n'a aucun sens, une force interne. Enfin, si, mais tu ne risques pas de déplacer un objet avec.

Voici comment j'ai codé ça dans le cas d'un mouvement positif : dv = a dt velocity += dv x = x + velocity dt cos(θ) y = y + velocity dt * sin(θ)

L'idée de base est pas mal (et "a" serait l'impulsion, alors ? En fait, c'est une force par unité de masse, autrement dit une accélération, certainement pas une "force interne"appelons les choses par leur nom). Par contre, pourquoi tu ne décomposes pas a et v en composantes ax, ay et vx, vy ? Parce que se traîner un angle, c'est pas une bonne idée, et que intrinsèquement, accélération et vitesse sont des vecteurs. D'un point de vue physique ça a plus de sens...

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 15:28:28

@dri1 a écrit:

Parce que se traîner un angle, c'est pas une bonne idée, et que intrinsèquement, accélération et vitesse sont des vecteurs. D'un point de vue physique ça a plus de sens...


Comment tu ferais pour t'en débarrasser ? Je vois pas trop sachant que c'est lui qui détermine la direction du palet par rapport au repère absolu

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 15:36:14

Bah j'ai déjà donné une piste :

Par contre, pourquoi tu ne décomposes pas a et v en composantes ax, ay et vx, vy ?

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 19:36:31

Désolé c'est pas très clair pour moi...

Je pars de la deuxième loi de newton \(\sum\)F = ma. 

supposons m = 1, donc \(\vec{F} = \vec{a}\) (F est ma force impulsive)

\(\vec{a} = (F.cos(\theta))i + (F.sin(\theta))j\)

\(\vec{v} = (F.cos(\theta).t + v_{0x})i + (F.sin(\theta).t + v_{0y})j\)

\(\vec{r} = (\frac{1}{2}.F.cos(\theta).t^{2} + v_{0x}.t + x_{0})i + (\frac{1}{2}.F.sin(\theta).t^{2} + v_{0y}.t + y_{0})\)

a et v sont maintenant des vecteurs, mais je vois toujours pas où tu veux en venir..:-°

-
Edité par Tiramitsu 30 octobre 2014 à 19:47:09

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 19:43:36

Bah une force est aussi un vecteur de composantes Fx et Fy... Que tu te fatigues d'ailleurs à calculer. Si tu tiens tant que ça à utiliser un angle, pourquoi tu n'utilises pas un repère polaire ? Ça te simplifierait la vie.

-
Edité par Anonyme 30 octobre 2014 à 19:44:59

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 19:56:12

Je tiens pas tant que ça à l'utiliser, je vois juste pas comment trouver les projections (x,y) de ces dit vecteurs sans utiliser la trigo

-
Edité par Tiramitsu 30 octobre 2014 à 20:00:36

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 20:01:13

Sauf que ce \(\theta\) que tu traines, c'est un angle entre le vecteur force et le vecteur de base des abscisses. Cet angle n'a donc à priori strictement rien à voir avec l'angle de la trajectoire de l'objet... :-°

Par ailleurs, en décomposant un vecteur en ses composantes \(x\) et \(y\) , tu peux bien lui faire prendre n'importe quelle direction sans avoir à te traîner un angle. Un système de coordonnées limité à certaines directions serait bien inutile...

EDIT : forcément, si on édite pendant que l'autre poste, ça veut plus rien dire, après. :-°

-
Edité par Anonyme 30 octobre 2014 à 20:02:30

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 20:15:26

Je vois toujours pas comment changer une direction sans avoir besoin d'un angle... mais bon je vais continuer à réfléchir, merci pour tes indications
  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 20:18:37

Bonjour,

j'ai peut-être raté une marche en lisant en diagonale, mais en l'absence de frottement, je ne comprends pas très bien comment un palet sur de la glace pourra avoir une trajectoire circulaire donnée par une impulsion , même si cette impulsion lui donne un moment cinétique le faisant tourner sur lui-même.

S'il y a frottement suffisant , on peut  donner par contre, par une impulsion convenable, des trajectoires parfois compliquées ou improbables : le billard en est un exemple spectaculaire ...à condition d'être maître dans l'art du rétro , piqué et autre massé .

Une autre façon d'avoir une trajectoire courbe après une impulsion  est de jouer sur l’aérodynamique ( c'est une autre utilisation du frottement). C'est l'effet Magnus que les tireurs de coup franc utilisent au foot ...sans en connaitre  sans doute la justification théorique.

  • Partager sur Facebook
  • Partager sur Twitter
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
Anonyme
30 octobre 2014 à 20:30:11

Tiramitsu a écrit:

Je vois toujours pas comment changer une direction sans avoir besoin d'un angle...

Ben... En appliquant une force non colinéaire avec le vecteur vitesse. Ça suppose un angle entre le vecteur force et le vecteur vitesse, mais tu n'as pas besoin de cet angle explicitement (et en fait, encore moins de l'angle entre l'axe des x et le vecteur force).

Je pense qu'on doit tous les deux rater un morceau de ce que pense l'autre sans l'écrire, d'où un dialogue de sourds. Histoire d'être sur la même longueur d'onde, comment tu définis ton theta ?

A Sennacherib : j'ai l'impression que l'idée est juste d'avoir une sorte de "réacteur" dans le palet qui tourne dans le référentiel du palet. Et que l'angle theta ne serait pas l'angle entre l'axe des x et le vecteur force, mais entre la direction de propagation du palet et la direction du réacteur.

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 20:31:40

Sennacherib a écrit:

je ne comprends pas très bien comment un palet sur de la glace pourra avoir une trajectoire circulaire donnée par une impulsion , même si cette impulsion lui donne un moment cinétique le faisant tourner sur lui-même.

Justement, j'ai les équations (voir mon deuxième post) permettant au palet de se mouvoir mais je ne parviens pas à les compléter pour l'empêcher d'avoir un trajet circulaire.

Le lien que j'ai mis en guise d'exemple illustre bien ce que je cherche à faire

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 20:39:43

En faisant varier l'angle Theta, la palet change d'orientation par rapport à l'axe des x et des y et le vecteur force est orienté dans la même direction. Ce qui provoque ce mouvement circulaire

edit :

Et que l'angle theta ne serait pas l'angle entre l'axe des x et le vecteur force, mais entre la direction de propagation du palet et la direction du réacteur.

Dans mon programme, la direction du réacteur est la même que la direction de propagation du palet.  

-
Edité par Tiramitsu 30 octobre 2014 à 20:48:30

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 20:44:51

Tiramitsu a écrit:

En faisant varier l'angle Theta, la palet change d'orientation par rapport à l'axe des x et des y et le vecteur force est orienté dans la même direction. Ce qui provoque ce mouvement circulaire

Ah d'accord. C'est super bizarre comme manière de procéder, pourquoi tu n'appliques pas plutôt une matrice de rotation à chaque tour de boucle ?

Par ailleurs, pourquoi voudrais tu faire "dévier" ton palet ? Si celui-ci subit une force "tournante", il n'a aucune raison de faire autre chose que des cercles...

Dans mon programme, la direction du réacteur est la même que la direction de propagation du palet donc

Bah non, sinon ton palet irait en ligne droite. :-°

-
Edité par Anonyme 30 octobre 2014 à 20:46:18

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 21:03:33

je ne sais pas si j'ai compris mais en fait le palet est comme équipé d'un "moteur" interne qui lui impulse de façon continue  une force variable ( en orientation , éventuellement en intensité)

donc comme le dit @dri1, si direction du "réacteur" et de la propagation sont les mêmes , il ira tout droit.

après je pense que le palet décrira un cercle  si le mouvement est à force centrale donc si la force passe par un point fixe ( où une conique si le module de la force n'est pas constant )

Mais selon ce que tu fais de F, tu dois pouvoir obtenir n'importe quelle trajectoire, non ?

Ce peut être alors une problème inverse : comment  doit varier la force pour obtenir une trajectoire donnée....

-
Edité par Sennacherib 30 octobre 2014 à 21:04:50

  • Partager sur Facebook
  • Partager sur Twitter
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
30 octobre 2014 à 21:09:02

Mais d'où elle sort maintenant cette force tournante ? :lol: C'est le vecteur Force ? 

A défaut de pouvoir m'exprimer correctement, voici un autre schéma (j'adore ça !).une rotation complète du palet.  En haut le comportement actuelle, où je ne fais pas varier la force impulsive. en dessous, le comportement recherché : 

Dans ce dernier cas, j'ai l'impression que la force impulsive diminue 

Merci de vous acharner sur mon cas désespéré ! :soleil:

-
Edité par Tiramitsu 30 octobre 2014 à 21:16:31

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
30 octobre 2014 à 21:46:11

Mais d'où elle sort maintenant cette force tournante ? :lol: C'est le vecteur Force ?

Bah ça, c'est à toi de nous le dire. :D Oui, c'est le vecteur force, par "force tournante", je voulais juste dire que ton vecteur force tourne autour du palet.

Dans ce dernier cas, j'ai l'impression que la force impulsive diminue

L'intensité peut varier, mais pas que. L'orientation de la force va jouer un rôle important dans la forme prise par la trajectoire.

Dans le premier cas, l'angle est une fonction porte du temps. Dans le second cas, ça va ressembler à un sinusoïde.

  • Partager sur Facebook
  • Partager sur Twitter
30 octobre 2014 à 22:15:13

@dri1 a écrit:

Bah ça, c'est à toi de nous le dire. :D Oui, c'est le vecteur force, par "force tournante", je voulais juste dire que ton vecteur force tourne autour du palet.

Je te dis, ce vecteur force, je l'ai pas explicitement défini. J'effectue juste une rotation theta sur l'axe z du palet, le palet tourne, s'ensuit les équations de mon second post qui définissent un nouveau vecteur suivant l'axe du palet. Je laisse ton interprétation faire le reste ! ^^

De toute façon si j'ai ouvert ce post, c'est pour tout refaire ^^

Je vais me renseigner sur les sinusoïdes !

-
Edité par Tiramitsu 30 octobre 2014 à 22:19:09

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
31 octobre 2014 à 0:06:51

Tiramitsu a écrit:

Je te dis, ce vecteur force, je l'ai pas explicitement défini. J'effectue juste une rotation theta sur l'axe z du palet, le palet tourne, s'ensuit les équations de mon second post qui définissent un nouveau vecteur suivant l'axe du palet. Je laisse ton interprétation faire le reste !

Et c'est bien tout le problème. :-° Il ne devrait pas y avoir de place pour l'interprétation. Je suis pas cuisinier.

En fait, je pense que tu devrais arrêter d'essayer de mettre des termes physiques sur ce que tu fais. Qu'est-ce que tu veux obtenir ?

Si j'ai bien compris, tout ce que tu veux, c'est obtenir la trajectoire sur ton dernier schéma. Alors arrêtons de parler de force, sinon on va jamais y arriver.

Ta trajectoire, ça me fait penser à une trochoïde.

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2014 à 0:18:17

Ce que je veux obtenir est similaire à ce mini-jeu : http://www.chromeexperiments.com/detail/starris/?f= (à voir sur firefox)

Quand tu met les gazs et que tu tourne en même temps, la trajectoire n'est pas circulaire mais trochoïde donc :)

Je vais me reposer ! Encore merci @dri1 !

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
31 octobre 2014 à 0:20:25

Ce que je veux obtenir est similaire à ce mini-jeu

J'arrive pas à le lancer ton mini-jeu...

Quand tu met les gazs et que tu tourne en même temps, la trajectoire n'est pas circulaire mais trochoïde donc

Sous réserve que ton schéma soit effectivement fidèle à la réalité, ça me semble au moins approchant.

EDIT : Juste sur ce morceau :

Quand tu met les gazs et que tu tourne en même temps

Si je comprends bien, ta soi-disant force depuis le début, c'est quand on tourne ? Tu es au courant que lorsqu'un véhicule tourne, ce qui le fait tourner n'est pas une force intrinsèque, mais les frottements avec le sol ?

-
Edité par Anonyme 31 octobre 2014 à 0:26:34

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2014 à 13:36:00

Bah c'est ton coup de volant qui va le faire tourner, après les frottements détermine la courbe de la trajectoire non ? ^

Je vais aborder ces notions en cours la semaine prochaine, ça me sera surement utile, je posterais le résultat ! 

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
31 octobre 2014 à 13:38:57

Bah c'est ton coup de volant qui va le faire tourner, après les frottements détermine la courbe de la trajectoire non ?

Oui, et si il n'y a pas de frottements (ou si ceux-ci sont insuffisants), la courbure est nulle. Donc tu continues en ligne droite. Exactement comme quand tu pars sur une plaque de verglas ou en aquaplaning. Tu peux bien essayer de tourner comme tu veux, le centre de masse du véhicule va tout droit (au mieux, tu arrives à le faire tourner sur lui-même).

-
Edité par Anonyme 31 octobre 2014 à 13:41:44

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2014 à 14:52:30

D'accord ! Je vais regarder ce que je peux pour faire modéliser ces forces de frottements alors ! Merki !

-
Edité par Tiramitsu 31 octobre 2014 à 14:52:42

  • Partager sur Facebook
  • Partager sur Twitter
31 octobre 2014 à 18:45:48

Bonsoir,

un certain retour à du déjà suggéré , ...je me cite :p

Sennacherib a écrit:

Bonjour,

j'ai peut-être raté une marche en lisant en diagonale, mais en l'absence de frottement, je ne comprends pas très bien comment un palet sur de la glace pourra avoir une trajectoire circulaire donnée par une impulsion , même si cette impulsion lui donne un moment cinétique le faisant tourner sur lui-même.

attention, la glace va finir par fondre  :lol:





  • Partager sur Facebook
  • Partager sur Twitter
tout ce qui est simple est faux, tout ce qui est compliqué est inutilisable
31 octobre 2014 à 22:17:20

Fond pas en larmes, tu nous as mis la puce a l'oreille ! Hohooo ! :soleil:
  • Partager sur Facebook
  • Partager sur Twitter