Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#1 13-05-2016 11:09:13

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Trajectoire billard.

Bonjour,
Mon projet du semestre 2 porte sur la trajectoire d'une balle ponctuelle dans différents billards.
En me servant d'un tore, j'ai pu faire le carré et normalement le rectangle.
Je penses que le triangle isocèle rectangle est aussi faisable avec cette méthode (cf image).
Mais pour ce qui est du triangle équilatérale je bloque... j'ai fait un programme et il semblerait que pour que la trajectoire soit périodique il faut que (a/b)*sqrt(3) (ou b/a si b nul...) appartienne à Q  (a et b soit les les composantes du vecteur dirigent initialement la trajectoire de la balle).
J'ai aussi essayer de faire un tore pour le triangle équilatérale mais il est "raté" : (j'en ai essayé d'autres mais c'est pas mieux)

827540geog1.png

Voici le programme en python :

from turtle import*
from math import*
ht()
tracer(100)
dist=0
xA=600
yA=100
vxA=1                           #a
vyA=sqrt(3)                     #b
m=max(abs(vyA),abs(vxA))
vxA=vxA/m
vyA=vyA/m
vxA0=vxA
vyA0=vyA
up()
goto(-400,-400)
down()
xA-=400
yA-=400
dx=xA
dy=yA
maxi=max(abs(vyA),abs(vxA))
fd(800)
left(120)
fd(800)
left(120)
fd(800)
up()
goto(xA,yA)
down()
dot(8)
vxA0=vxA=vxA/maxi
vyA0=vyA=vyA/maxi
xA0=xA
yA0=yA
while 1:
    if (sqrt(3)*(xA+400)<=(yA+400)+5 or 800*sqrt(3)-sqrt(3)*(xA+400)<=(yA+400)+5 or yA<=5) and abs(maxi)>=1:
        vxA=vxA/100
        vyA=vyA/100
        maxi=maxi/100
        vxA0=vxA0/100
        vyA0=vyA0/100
    elif abs(maxi)<1 and sqrt(3)*(xA+400)>(yA+400)+5<800*sqrt(3)-sqrt(3)*(xA+400) and (yA+400)>5 :
        vxA=vxA*100
        vyA=vyA*100
        maxi=maxi*100
        vxA0=vxA0*100
        vyA0=vyA0*100
    if sqrt(3)*(xA+400)>(yA+400)<800*sqrt(3)-sqrt(3)*(xA+400) and (yA+400)>0:
        xA+=vxA
        yA+=vyA
        goto(xA,yA)
    elif sqrt(3)*(xA+400)<=(yA+400):
        vxAc=vxA
        vyAc=vyA
        x=cos(radians(30))*vxAc-sin(radians(30))*vyAc
        y=sin(radians(30))*vxAc+cos(radians(30))*vyAc
        vxA=cos(radians(30))*(-x)+sin(radians(30))*y
        vyA=-sin(radians(30))*(-x)+cos(radians(30))*y
        dist+=distance(dx,dy)
        dx=xA
        dy=yA
        xA+=vxA
        yA+=vyA
        goto(xA,yA)
    elif (yA+400)>=800*sqrt(3)-sqrt(3)*(xA+400):
        vxAc=vxA
        vyAc=vyA
        x=cos(radians(30))*vxAc+sin(radians(30))*vyAc
        y=-sin(radians(30))*vxAc+cos(radians(30))*vyAc
        vxA=cos(radians(30))*(-x)-sin(radians(30))*y
        vyA=sin(radians(30))*(-x)+cos(radians(30))*y
        dist+=distance(dx,dy)
        dx=xA
        dy=yA
        xA+=vxA
        yA+=vyA
        goto(xA,yA)
    elif yA<=0:
        vyA=-vyA
        dist+=distance(dx,dy)
        dx=xA
        dy=yA
        xA+=vxA
        yA+=vyA
        goto(xA,yA)
    if sqrt((xA0-xA)**2+(yA0-yA)**2)<=1 and dist>100 and abs(vyA0-vyA)<0.00001 and abs(vxA0-vxA)<0.00001:
        goto(xA0,yA0)
        dot(8)
        dist+=distance(dx,dy)
        break
print(dist/800)

Voila, je veux bien quelques idées pour pouvoir avancer (mais pas de solutions s'il vous plait, juste d'autres pistes).


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#2 13-05-2016 12:17:25

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Bonjour,
C'est marrant votre jeu.
Je ne connais pas Python, je travaille en C.
Juste un question, je n'ai pas compris pourquoi vous parlez de tore.
D'autre par, votre souci est bien de faire un mouvent perpétuel dans un triangle équilatéral . C'est bien ça ?

Hors ligne

#3 13-05-2016 12:32:12

yoshi
Modo Ferox
Inscription : 20-11-2005
Messages : 16 946

Re : Trajectoire billard.

Salut,

Mon projet du semestre 2 porte sur la trajectoire d'une balle ponctuelle dans différents billards.
En me servant d'un tore, j'ai pu faire le carré et normalement le rectangle.

Par balle ponctuelle, tu veux bien dire une balle réduite à un point ?
Quel est le point de départ de cette balle ?
Qu'est-ce que tu veux dire par différents billards ?  Des billard ayant des formes géométriques - planes - classiques :
  * triangles non quelconques ?
  * quadrilatères connus ?
  * autres polygones réguliers ?

Je ne comprends pas non plus, si les surfaces de jeu de tes billards sont planes, pourquoi tu as besoin d'un tore ?
Tu dis

la trajectoire d'une balle ponctuelle

puis après :

il semblerait que pour que la trajectoire soit périodique

Et si tu précisais de façon claire et précise ta problématique ?

@+


Arx Tarpeia Capitoli proxima...

Hors ligne

#4 13-05-2016 13:39:03

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Alors,
Oui c'est une balle réduite en un point,
Il n'y a pas de point de départ préciser car on s’intéresse à toutes les trajectoires possibles mais pour le carré et le rectangle la position de départ ne change ni la périodicité, ni la longueur de la trajectoire.
Différents billards : carré, rectangle, polygones etc... mais la je regarde le triangle équilatéral (et rectangle...)

Les surfaces sont planes mais regarde la figure du billard rectangle que j'ai fourni, si on reste sur le rectangle de base (le petit en bas à gauche) le vecteur "vitesse" change au cours du temps (quand on fait un rebond) mais en s’intéressent au plus grand rectangle composés de symétriques du rectangle à étudier, le bas est associé au haut et le côté droit au gauche ce qui fait un tore, maintenant le vecteur vitesse ne change plus et c'est bien; quand on arrive en haut du grand rectangle et bien on continue en bas et idem sur les cotés...

Pour le triangle équilatéral, on peut aussi se ramener à ce que le vecteur vitesse ne change pas mais quand on touche un bord on va au bord opposé... et a je ne sais pas comment montrer qu'il faut que (a/b)*sqrt(3) appartienne à Q pour que la trajectoire soit périodique (propriété conjecturé grâce au programme)

Pour résumer ma problématique (actuelle) : qu'elles sont les trajectoires périodiques dans le triangle équilatéral et qu'elles sont alors leur longueur ?

PS : normalement pour le triangle équilatéral la position de la balle à l’état initial ne change pas la longueur d'une période mais il y a au moins un exception : si on par de milieu de la base du triangle avec un angle de sqrt(3) c'est deux fois moins que si on part d'un autre point sur la base.


à Dlzlogic : Un mouvement perpétuel pas vraiment (c'est toujours le cas en fait...) mais périodique.




Désolé, Geogebra m'a changé le noms des vecteurs, voici la bonne version plus compréhensible pour le rectangle :

187853torerectangle.png

Dernière modification par Terces (13-05-2016 13:45:32)


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#5 13-05-2016 13:56:48

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Bon, je trouve cela un peu difficile à lire, d'autant qu'il n'y a aucun commentaire.
Je pense que la première chose à faire serait d'écrire l'algorithme en français. Apparemment, ce long module ne fait que dessiner des points (pour tracer des segments ?) la plupart des instructions ne semblent être que des tests de dépassement.

Hors ligne

#6 13-05-2016 14:08:19

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Oui désolé pour le programme, en voulant l'optimiser il est devenu compliqué...
Après ici le programme est plus un outil qu'autre chose car avec les pixels je ne peux rien prouver mais ca donne une valeur aproximative de la longueur des trajectoires ce qui peut être pratique.

Pour résumer ce qu'il fait :

On entre a et b, qui sont réduit(ou augmentés) pour que max(a,b)=1 donc on avance au maximum d'un pixel par étape.
Quand on est très proche d'un bord, cette valeur est divisé par 100 pour plus de précision(même si on peut pas avancer d'un centième de pixel, l'expérience montre que c'est plus précis...)
Pour ce qui est du calcul de réflexion, je sais ce que ca fait pour un carré (c'est assez intuitif) donc je fais un changement de référentiel, la je change naturellement le sens comme dans un carré puis encore un changement de référentiel pour revenir dans le triangle.

Dernière modification par Terces (13-05-2016 14:11:17)


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#7 13-05-2016 14:34:11

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Oui, c'est ce que j'avais compris.
Mais quel est l'énoncé exact du problème ?
Il faut bien voir qu'en informatique, un nombre "exact", sauf si c'est un entier, n'existe pas. Si j'écris a=3.7 et que je teste ( a == 3.7 ), la réponse sera normalement TRUE.
Par contre si j'écris A = 3.0 / 7.0 le test ( A == 3.0 / 7.0) sera généralement FALSE. Cet exemple est issu qu'un document incontestable, que malheureusement je ne retrouve pas.
Cela est d'autant plus vrai si on test des pixels, puisqu'au lieu d'avoir (disons) une dizaine de chiffres significatifs, il n'y en plus que 3.
Quand on multiplie par sin(quelque-chose) on obtient une valeur avec un nombre limité de chiffres significatifs. Si ensuite on ajoute ou soustrait un cos(quelque-chose), on perd encore un fois de la précision. Si on cumule ces résultats, alors on obtient n'importe quoi.
C'est peut-être ce qui se passe avec votre problème.

Hors ligne

#8 13-05-2016 14:50:04

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Re,
Python n'a pas de problème avec le 3/7^^
pour ce qui est des chiffres significatifs, on est pas dans un cas ici où on "obtient n'importe quoi" mais si je ne fais pas ce que j'ai fait, c'est au niveau de la limite du triangle qu'il peut y avoir des problèmes, ca va un peu dépasser à chaque fois si je ne fais pas le /100. et si la trajectoire est censé être assez longue alors on passe trop à côté du point de départ et la c'est foutu...

L'énoncé du problème est actuellement à mes yeux : à quelle condition une trajectoire est périodique dans un triangle équilatéral et quelle est alors la longueur d'une période.


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#9 13-05-2016 15:42:10

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Oui, je sais le coup du 3/7. Ce n'est pas un problème de langage, mais un problème d'informatique.

Je crois que la réponse est simple : si l'angle d'incidence est égal à 60° ou pi/3.
Par contre, pour le vérifier avec l'informatique, ça me parait difficile. C'est un problème de géométrie.
Par ailleurs, si ça vous intéresse, je connais un document qui étudie très précisément ce cas de bille de billard avec des figures compliquées.
Pour le traiter à l'informatique il faudrait que les erreurs dues à la précision ne se cumulent pas. Mais, ça me parait un problème difficile.
En tout cas, c'est mon avis.

Petit complément concernant la précision (ça, c'est pas mon avis).
J'ai pris cet exemple de 3/7 parce que c'était celui-là qui a servi de support à l'explication dans le document.
Un autre test très simple : on prend 2 points (X1, Y1, X2, Y2) et on calcule le point M milieu. Ensuite, on teste l'égalité des segments ainsi créés. D'ailleurs, même plus simple, on prend 2 point X1 et X2 sur le même axe. Donc XM est la moyenne 1-2 et on compare les deux différences X1-XM et XM-X2.

Dernière modification par Dlzlogic (13-05-2016 16:10:20)

Hors ligne

#10 15-05-2016 15:59:39

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Re,
895414001.jpg

Alors dans l'exemple pr le calcul de lp j'ai inversé a' et b' car on avait |a|=0 < |b|=1.
J'ai cherché mais je n'arrives pas à faire la bijection "dans le sens inverse" pour trouver le véritable lp qui est dans l'exemple censé être 3 (sauf pour une exception....)

Il est possible que pour le triangle équilatéral il y ai beaucoup plus simple (en faisant un pavage des symétriques du triangle) mais je voulais essayer cette piste (notamment pour les triangles isocèles).

J'espère que vous comprendrez ce que j'ai écrit.


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#11 16-05-2016 13:50:04

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Bonjour,
La propriété d'une boule de billard est de rebondir sur la bande de façon que la bissectrice de l'angle entre les 2 directions est la perpendiculaire au point d'impact. J'ai fait un petit dessin et je crois bien que si l'angle d'impact n'est pas 60°, alors la bille termine assez vide dans un coin.
Par contre, si l'angle est bien 60°, les directions seront toujours le mêmes à 60° près et à la fin du deuxième tour elle se retrouve à son point initial.
Je crois que pour calculer la distance parcourue suivant une période  Le résultat est facile, il faut le démontrer.

Hors ligne

#12 16-05-2016 16:31:36

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Salut, non tu t'es fait avoir^^ la balle ne converge pas vers les sommets.

Sur le schéma ci-dessous, j'ai représenté un triangle rectangle isocèle et un triangle quelconque de telle sorte que le coté c soit // à l’hypoténuse du triangle rectangle isocèle.
Si on a un vecteur dans Oxy (x,y) alors je crois que j'ai trouvé ce qu'il valait dans Ox'y' (x',y') mais maintenant j'aimerais exprimer ce nouveau vecteur comme s'il était dans Oxy. Par exemple si on a (1,0) dans Oxy, ca va nous donner (x',0) dans Ox'y' ce qui va nous donner (x",y") avec x" et y" non nul en général si on regarde ce vecteur dans Oxy.

246294001.jpg


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#13 16-05-2016 18:24:57

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Si j'étais vous, pour chaque cas, je tracerais je chemin d'une dans le billard.
Pour chaque cas, il y 2 variables (paramètres)
1- la position de départ
2- l'angle de départ.
Les calculs ne peuvent se faire que sur une figure complète.

Hors ligne

#14 16-05-2016 19:05:05

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Re, la position de la balle n'a de manière générale pas d'impact sur la longueur de la trajectoire.
Que veux-tu dire par "figure complète" ?


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#15 16-05-2016 22:29:16

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Bon, alors je me suis mal exprimé.
Si j'ai bien compris, l'énoncé parle de "parcourt de la boule" et donc de "distance parcourue" = longueur de la trajectoire.
Je suis persuadé que la position de la boule dans sa position initiale, c'est à dire sur une bande est un paramètre important. D'ailleurs tous vos dessins figurent cela.
Par figure complète, je veux dire le tracé que suit une boule, depuis son départ de sa position initiale jusqu'à son retour à cette même position.
Bonne soirée.

Dernière modification par Dlzlogic (16-05-2016 22:29:44)

Hors ligne

#16 16-05-2016 22:49:24

Terces
Membre
Inscription : 16-07-2015
Messages : 466

Re : Trajectoire billard.

Re,
la position initiale de la boule change la trajectoire mais dans le rectangle ca ne change par contre pas la longueur de la trajectoire et ca je l'ai prouvé.
Par contra dans le triangle équilatéral il y a "un" cas particulier où la position change la longueur de la trajectoire, je ne sais pas s'il y en a plus de "un" ou non.
Après, le programme ca aide pour comprendre ce résultat.


La somme des inverses de la suite de Sylvester converge vers 1 plus vite que toute autre série somme infinie d'inverses d'entiers convergeant vers 1.

Hors ligne

#17 17-05-2016 11:52:13

Dlzlogic
Banni(e)
Inscription : 25-04-2016
Messages : 461

Re : Trajectoire billard.

Bonjour,

Après, le programme ca aide pour comprendre ce résultat.

Je dirais plutôt " un dessin, ca aide à écrire le programme".
Pour moi, un programme n'est que la réalisation d'une grand nombre d'opérations en un minimum de temps. Un programme évolué peut servir d'aide à la conception (CAO) ou d'ide au dessin (DAO), mais un programme ne fera que ce qu'on lui demande de faire, avec une syntaxe qu'il comprend, sauf dans le cadre de IA, naturellement.

Hors ligne

#18 30-10-2020 22:02:51

ano4541515611841
Invité

Re : Trajectoire billard.

bonjour j'ai un devoir a rendre, mais je comprend rien, j'y arrive pas. C'est sur python avec turtle. Je dois faire un billard , un troue et une tortue. Ils sont aléatoire. puis je dois Déplacer la tortue en la faisant s’arrêter à chaque bord
Changer automatiquement de direction à chaque bord et incrémenter le compteur
Stopper le programme à la 5ième bande et afficher « perdu » sans s’occuper du disque
Inclure la rencontre avec le disque et compter faux si bandes <2 ou >4
Afficher « gagner » en cas de victoire
Afficher la distance parcourue.
Merci de votre réponse.

Réponse rapide

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
quarantehuit moins trente et un
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Pied de page des forums