(soyez indulgents sur les fautes de frappe ou pire, d'orthographe ...
le contrôle qualité n'est pas encore passé.)
Par ailleurs, j'ai voulu écrire un soft qui tourne sur des machines diverses, quoiqu'assez rapides (à partir du pentium). Ceci m'a conduit à négliger certains aspects qui restent difficiles à programmer, ou qui, à mon sens n'allaient pas dans la direction voulue. Les buts de cette réalisation sont :
L'interaction entre la queue et la bille jouée est réduite au minimum. Si on met du bas, il y aura du bas, si on joue avec la queue inclinée, on simulera un massé ou un piqué, mais je ne considère pas les équations physiques qui pourraient conduire à des fausses queues ou à des glissements de la bille "autour de la queue" lors de petits massés.
Pourquoi ?.
La raison principale est qu'il est très facile de deviser sur ces aspects du billard, exemples à l'appui, mais bien souvent, ces notions sont très dures, voire impossible à mettre en équation. Par exemple, dans le magnifique livre de R.Conti , le "professeur" donne le conseil de reculer le pied droit pour allonger le coup. Ça marche !. Mais comment voulez vous formaliser ceci dans un simulateur, et physiquement ?.
Ces considérations s'appliquent à l'homme, et au mécanisme humain. Par exemple, je n'ai jamais joué au golf, mais les champions (des gens compétents) insistent très souvent sur le mouvement après le coup. Quand le club remonte. Je peux vous garantir que la balle se moque bien de savoir, une fois partie, que le geste était beau ou disgracieux une fois le choc passé. Pourtant, pour corriger certaines appréhensions, certains défauts, il faut se concentrer sur cet aspect du coup.
J'ai coutume de dire aux gens qui m'écrivent que ce simulateur est en fait un simulateur d'un robot qui joue au billard. Donnez lui 10 fois de suite la même position et les mêmes indications pour jouer le coup, il jouera 10 fois le même coup, à moins d'un micron près. Personne n'est capable d'une telle performance. Et ceux qui s'en rapprochent le plus sont les champions, qui savent évacuer l'aspect émotionnel de leur jeu, et jouer "mécaniquement". Leurs problème n'est pas "Est-ce-que je vais réussir ce petit massé ?", mais "La rouge doit elle se retrouver ici ou 1cm plus loin pour le coup suivant.".
Vous donnez des ordres à un robot. Ou, si vous préférez, vous êtes en plein rêve et quand vous mettez du bas, il y en a, quand vous visez une bille à 2m de la votre, vous l'atteignez... Bref, tout va bien.
Sincèrement, je pense que cela (l'introduction des données
telles que la force du coup, la quantité de rétro, l'effet,
l'angle de la queue) ne pénalise en rien l'utilisateur, une fois
prévenu.
Les livres donc :
Vous trouverez un peu partout, dans des livres de cours de physique,
ou de mécanique les équations nécessaires à
la compréhension des phénomènes en jeu dans
le mouvement des billes. Selon votre formation, vos souvenirs ou encore
votre pugnacité si vous vous y remettez, vous constaterez que le
notations dans ces ouvrages sont assez différentes les uns des autres.
Par exemple, dans l'ouvrage de Coriolis, les explications sont assez claires, mais nécessitent une lecture attentive (papier + stylo à portée de main). De plus, le traitement est assez orienté "géométrie". D'autres ouvrages beaucoup plus récents n'apportent à mon sens rien de plus. Les auteurs abordent les problèmes de la même façon, utilisent le même formalisme, et se contentent d'énumérer des phénomènes, de façon très rigoureuses, pour quelques lignes plus loin dire des choses du style, entre 10 et 20 degrés, telle ou telle quantité est négligeable. Bel effort. Moi, j'ai 11 degrés et je suis en train de programmer ces équations sur ma calculette, je fais quoi ??
En un mot, si vous voulez un ouvrage de référence, il
faudra le payer. En sous, car l'ouvrage de Coriolis est assez cher, en
réflexions, car sa lecture n'est pas aisée. Mais vous ne
regretterez pas si vous ne voulez acheter qu'un seul livre. Dans le cas
contraire, tournez vous plutôt vers des cours de mécanique
du solide.
Si vous voulez comprendre le billard, mais que vous ne voulez pas trop
de physique, reportez vous plutôt sur des ouvrages écrits
par des "bons joueurs". Il y en a d'excellents (des ouvrages), et ces gens
la (les grands joueurs) ont souvent une intelligence certaine de la physique.
Méfiez vous des ouvrages ou l'on fait référence au
traité sur la "Métaphysique transcendantale des effets au
jeu de billard" de G. Coriolis...
Changement de nature des phénomènes.
Les équations physiques mentionnées ci-dessus, sont issues
directement de quelques principes physiques. Essentiellement les lois de
Newton ceci dit en passant. La prise en compte des diverses forces sur
les billes va donner des équations différentes. Non pas que
la physique soit différente, mais ce qu'on cherche à résoudre
l'est.
Ainsi, une bille qui tourne sur elle même en glissant sur
le tapis, est régie par une équation plus complexe qu'une
bille qui roule sans glisser. Donc, une bille qui initialement glisse,
et qui finalement roule, va être décrite par deux jeux d'équations.
On a coutume de dire qu'à un moment donné, il y a eu changement
de nature du mouvement.
Le changement de nature est encore plus violent, cette fois au vrai
sens du terme, lorsqu'une bille qui roule en heurte une autre. Modéliser
ce phénomène revient à décrire la trajectoire
avant le choc, à calculer l'instant exact du choc, et les paramètres
qui permettent le calcul des conditions initiales du mouvement après
le choc.
"Informatiquement" parlant, il faut à tout moment savoir dans
"quel cas" on se trouve, ou savoir prédire quand se passera le prochaine
changement de nature. Ce n'est pas ce qu'il y a de plus facile.
Cela constitue même une des principales difficultés de
la programmation des équations. Par exemple, si une bille glisse
sur le tapis, celui ci engendre une réaction de frottement . Cette
réaction de frottement va cesser á l'instant même où
le glissement cessera. De même, la réaction de
frottement va toujours faire en sorte de s'opposer au mouvement, mais ne
va jamais imprimer à l'objet un mouvement "dans l'autre sens". Une
des taches ardue à réaliser va donc être de décider
à tout moment de la valeur de ce frottement. Et comme "à
tout moment" signifie souvent en informatique, tous les "petits pas de
temps", par exemple toutes les millisecondes, c'est un problème
qui va revenir souvent.
Un exemple concret:
Vous roulez en voiture à 100km/h. Vous freinez, ce qui a pour
effet d'imprimer á la voiture une décélération
(modification delà vitesse dans le temps). Supposons que cette décélération
soit de 10km/h par seconde et constante jusqu'à l'arrêt. Alors,
au bout de 5 secondes, votre vitesse n'est plus que de 50km/h. De 20km/h
au bout de 8 secondes.... et vous êtes à l'arrêt au
bout de 10 secondes.
Bien, maintenant supposons que votre vitesse initiale est de 95 km/h.
Au bout de 8 secondes vous êtes à 15 km/h, à 5 au bout
de 9 secondes, ... et à 0 au bout de 10 secondes, mais ce depuis
le temps t=9,5 secondes.
Une application bête et méchante de V(t) = 95 - 10 t
vous donne une vitesse de -5 km/h après 10 secondes.
Il faut donc détecter l'arrêt avec précision pour
décrire le mouvement.
Transposez ceci au cas d'une bille en rotation, et vous verrez que
1) le frottement modifie la vitesse de rotation Oméga
2) le frottement modifie la vitesse de translation V
ces modifications vont dans le sens de la diminution de la vitesse
de glissement VG et doivent donc être traitées en simultanément.
Sinon, on entre dans le cycle infernal, V diminue, Oméga et
VG aussi, .... (la vitesse de glissement devient nulle entre deux calculs)
, VG change de signe (la voiture recule) on modifie V et Oméga
pour que VG diminue .... et ainsi de suite.
Un peu comme si vous avez le choix entre le micro-onde et le congélateur pour chauffer une casserole d'eau à une température donnée. Si vous prenez une décision (chaud ou froid) toutes les 10 secondes, vous serez moins précis que toutes les secondes, et vous allez dans les deux cas prendre le risque de dépasser la consigne dans un sens ou dans l'autre.
(ces problèmes ne sont pas des problèmes simples.)
Sources d'informations, lectures.
En ce qui concerne les livres scolaires, dans les ouvrages de physique jusqu'en terminale, vous entendrez parler de points matériels, de moments, de forces, mais avec, entre autre, des notations qui sembles inappropriées pour décrire un mouvement complexe avec des rotations autour d'axes quelconques. Vous serez en mesure de "comprendre" pourquoi une bille avec un effet rétro freine, mais il va vous manquer des outils pour calculer au bout de combien de temps elle s'arrête, et quelle distance elle parcourt en revenant vers vous. (si je me trompe, reprenez moi.) De plus, le frottement n'est souvent abordé que dans ses aspects les plus simples, c'est à dire de telle façon que l'on puisse mener à bien les calculs.
Dans des ouvrages de mécanique un peu plus complexes, vous trouverez les outils pour résoudre ces problèmes, mais toujours avec des conditions initiales assez simples. Les notations deviennent un peu plus complexes, un peu plus lourdes à manipuler. Mais c'est nécessaire pour bien formaliser les problèmes que l'on doit savoir résoudre, et cela permet aussi de s'affranchir de plus en plus du "feeling". Dans ces ouvrages, on apprend à résoudre des problèmes en évacuant de plus en plus l'intuition. Une phrase victorieuse est souvent du style : "c'est marrant, ça marche comme en vrai...".
Pourtant, on reste un peu sur sa faim, et on doute (quand on est élève)
de plus en plus du bien fondé de tout cela quand on s'aperçoit
que l'on est capable de calculer la période de la rotation des satellites
de Jupiter, et que l'on ne sait pas calculer la période d'un pendule
simple, quand celui ci décrit de grandes oscillations.
Calculer s'entend ici par "donner une expression (simple ou non : par
exemple T=2pi sqrt(l/g))" apportant la solution pour un jeu de paramètres
. On peut bien sur calculer une valeur numérique, ou encore établir
des tables, ou des fonctions d'approximation par le calcul des solutions
pour un grand nombre de valeurs en entrée.
Le problème est bien la. Il y a des choses compliquées
qui se calculent bien, où les théories donnent à l'étudiant
des équations qui se simplifient et qui à l'aide d'une calculatrice
donnent des résultats du style, la période est 2.23453 secondes.
Et puis, il y a tous les autres problèmes. Ceux pour lesquels on
ne sait que dire des choses comme : Si le pendule fait un angle alpha avec
la verticale, alors on a une force F. Cette force F donne une accélération
A.
On a alors une équation du style : si on est à gauche,
on freine pour revenir à droite, et si on est à droite, on
freine pour revenir à gauche. On sait ce qui se passe à
tout instant,
et on cherche à acquérir des connaissances
sur de longues durées.
Pour imager, on cherche à faire le plan d'un circuit automobile
(une route qui revient à son point de départ), en étant
à l'intérieur d'une voiture, la nuit, avec des phares qui
éclairent pas trop loin devant. Il faut pour cela faire quelque
chose qui ressemble à : j'avance de 10 mètres, je trace un
trait sur le plan de centimètre (échelle 1/1000). Je regarde
si je tourne et de quel angle. Si oui, j'indique sur le plan la nouvelle
direction. .... Et on recommence ...
Si vous faites cela, vous allez transformer une connaissance "locale"
en une connaissance "globale". Vous connaîtrez la longueur
du circuit, vous saurez le temps mis pour faire un tour suivant votre vitesse.
Maintenant, vous vous rendez compte que si, au lieu de faire le point tous
les 10m, vous le faites tous les mètres, le résultat est
bien meilleur. Mais de combien ?...
Un peu de terminologie en passant.
En physique, ou en math, on appelle la démarche précédente intégrer, et les équations qui lient des variables comme la position, la vitesse et l'accélération des équations différentielles. Et la question sur la précision obtenue, suivant le "pas" d'intégration (les 10 mètres de l'exemple précédent) sont le style de question que se posent les personnes qui font des mathématiques appliquées. Ces questions concernent plus la façon de résoudre le problème que le problème lui même.
Quand on a plusieurs variables, qui dépendent les unes des autres, (de la même façon que la vitesse dépend de l'accélération, la position de la vitesse ...) on parle alors d'équations aux dérivées partielles.
On dit également que la fonction vitesse est la dérivée de la fonction position, que l'accélération est la dérivée de la vitesse, et de façon réciproque, que pour calculer la vitesse, il faut intégrer l'accélération, et que pour calculer la position, il faut intégrer la vitesse.
Certaines équations différentielles peuvent se résoudre
sans faire intervenir le calcul numérique.
Par exemple, le calcul du mouvement d'un pendule simple lors de faibles
oscillations.
Parfois, on ne parvient qu'à donner une expression sous forme
d'intégrale, (une formule) qui n'admet pas de primitive simple (une
autre formule). On doit alors si on veut une expression numérique
faire appel au calcul numérique.
Parfois encore, on ne sait pas simplement donner une expression sous
forme littérale. On se contente alors de donner les équations
différentielles, tout en sachant que leur résolution ne sera
QUE NUMÉRIQUE. Les équations de la mécanique des fluides
sont un exemple de cette démarche. On les écrit souvent en
pensant très fort à leur résolution numérique.
(Vous prendrez les valeurs numériques qui vous conviennent, celles ci sont farfelues).
Un "couple" de lapins donne naissance a 3 petits tous les mois.
Les lapins peuvent se reproduire dès qu'ils ont 2 mois. Combien
avez vous de lapins au bout de 1 an ?. Maintenant, la même question
en considérant qu'un lapin a une durée de vie de 6
mois. Pas facile ??.
Réfléchissez à ces problèmes et vous verrez
apparaître des équations différentielles.
Essayez de les résoudre et vous verrez qu'il manque une donnée
très importante pour l'application numérique. Le nombre
de lapins au début. C'est ce que l'on appelle la condition initiale.
Vous verrez aussi qu'il est très facile de calculer combien
il y aura de lapins le mois suivant, connaissant la population actuelle,
mais que c'est nettement plus compliqué de calculer la population
après un nombre de mois élevé. Si vous avez un ordinateur,
ou une calculatrice programmable, vous pouvez résoudre ce problème
"sans trop de réflexion", vous calculez les données de mois
en mois.
Vous verrez aussi que commence à intervenir des problèmes
numériques, (des grands nombres) et que si on vous demande de calculer
la population après 1 million de mois, ...., l'ordinateur
va tourner un certain temps.
Voilà. Vous avez une petite idée de la résolution numérique d'un problème "localement" très simple (passage du mois n au mois n+1).
Si vous fouillez un peu, vous verrez qu'il existe des équations différentielles pour lesquelles les conditions initiales sont si importantes qu'une variation infime sur un des paramètres donne des comportements complètement différents. Mais tout ceci est une autre histoire. (lisez le livre de Gleick sur la théorie du chaos, (mais n'en "mettez" pas partout ... du chaos). C'est un bon ouvrage de vulgarisation. Les gens à qui le l'ai passé l'ont bien aimé.).
Les objectifs que je me suis fixé pour l'interface graphique sont :
En ce qui concerne la gestion des options, du travail reste à
faire. Entre autre, la possibilité de régler des paramètres
comme les divers frottements, la taille du billard, ... Ces options
permettront de mieux apprécier les phénomènes physiques
en jeu lorsqu'elle seront dans le soft. Par exemple, de vérifier
l'influence d'un tapis neuf par rapport à un tapis ancien, de bonnes
bandes, la température etc... Ceci représente beaucoup de
travail de modélisation, et devrait répondre à la
plupart des critiques qui me sont faites sur le réalisme de ce simulateur.
En donnant la possibilité de modifier la façon de répondre
du billard, je devrais m'approcher de plus en plus de ce que vous voyez
sur "votre" billard, non ?
Ici, le modèle du billard est un plan, délimité par des bandes, et des billes sphériques. Chacun de ces objets possède des caractéristiques qui sont principalement :
Pour le billard:
A noter que tout mouvement d'un solide, aussi complexe soit il,
peut être à tout moment décrit par la donnée
de son vecteur rotation (axe + vitesse angulaire), et la vitesse d'un des
points du solide. On dit parfois que tout mouvement est localement tangent
à un mouvement hélicoïdal (rotation + translation).
Comme on le voit, les objets sont très "grossièrement" modélisés. Et le nombre de variables qui servent à décrire un état est limité. Heureusement, car on aura pas mal de calculs à faire.
La modélisation de phénomènes est tout un art.
Et aussi une démarche d'esprit. Quand vous voyez quelque chose autour
de vous, et que vous vous posez la question, "comment pourrais-je simuler
cela ?", vous êtes amenés à tenter de comprendre comment
ça marche. Et bien souvent, cette réflexion amène
a un compréhension profonde des phénomènes. (Un exemple,
comment modéliser la formation des bouchons sur un autoroute ?.)
Mais attention, une mauvaise modélisation conduit à de
faux modèles. Essayez d'imaginer par exemple ce que serait un simulateur
de billard dans lequel on ne considérerait pas la rotation des billes,
mais le frottement dans l'air. Certains phénomènes sont négligeables,
d'autres pas.
L'idéal est de disposer de langages de programmation et de structures de programmes qui permettent de "débrancher" tel ou tel traitement. Par exemple pour vérifier le bon comportement des chocs, et pour mettre au point cette portion de programme, si on peut inhiber les autres traitements, comme les frottements divers et la perte d'énergie sur les bandes, on va pouvoir regarder des billes (des "palets") qui s'entrechoquent pendant longtemps, puisque la perte d'énergie est nulle.
C'est pourquoi il faut toujours être critique, et ne pas hésiter
à remettre en cause ses modèles, et à prévoir
"de la place" dans l'architecture du programme. De ce point de vue, des
langages objets comme le c++ sont biens pratiques, car on peut assez facilement
modifier des comportements sans rendre le programme trop incompréhensible.
On a les objets, en fait, les modèles des objets.
Maintenant, il faut modéliser les interactions entre ces objets.
On s'aperçoit que les phénomènes en jeu sont essentiellement
:
Donc, pas de problèmes trop complexes sur le traitement de ces chocs, et du frottement.
Ce qui est difficile à traiter, et j'y reviendrai plus longuement sur des exemples, c'est le changement de nature des phénomènes en cours de mouvement.
Un exemple, lorsque deux billes se rencontrent, il faut calculer exactement la position au moment précis du choc. Simple quand une bille est à l'arrêt et que l'autre se déplace en ligne droite. Un peu plus délicat quand les deux sont en mouvement et décrivent des trajectoires complexes. (au passage, le fait que les trajectoires se coupent ne signifie pas qu'il y a choc. Pour qu'il y ait choc, il faut que la distance entre les billes soit à un instant donné inférieur à un diamètre de bille. )
Un autre exemple sur lequel je reviendrai, lorsque la bille glisse sur le tapis, elle est soumise à une force de frottement qui tend à s'opposer au glissement. Après un certain temps, elle se met à rouler. A cet instant précis, le frottement disparaît. Le mouvement change de nature.
Un autre problème se dessine alors. Celui du temps de calcul.
Il va falloir à tout instant détecter ces collisions et ces
passages par le roulement. Mieux vaut faire une routine de calcul rapide.
Ces deux techniques ont leurs avantages et leurs inconvénients. La première version du simulateur (windows 3.1) faisait les calculs et l'affichage en même temps. Aujourd'hui, je fais d'abord tous les calculs, et l'affichage ensuite.
Sous forme synthétique, je vous présente selon moi les
avantages et les inconvénients de ces deux méthodes:
Méthode | Affichage différé: | Affichage pendant les calculs |
Avantages | Algorithme plus simple. | Moins d'attente sur un machine lente entre deux événements.
On peut sur des machines lentes à la fois: diminuer la fréquence du rafraîchissement, et augmenter les pas de temps d'intégration. |
Les calculs sont toujours menés de la même façon.
Les résultats sont reproductibles d'une machine à l'autre. |
Nettement plus marrant à écrire. Il faut synchroniser
des taches, mettre en place des heuristiques pour déterminer les
diverses fréquences.
Faire glisser ces fréquences en temps réel pour tenir compte de la charge machine... |
|
Possibilité de rejouer le même coup sans devoir refaire
le calcul.
Par exemple pour des zooms, des redraws... |
||
|
|
|
Inconvénients | Attente avant l'affichage sur des machines lentes.
Il ne se passe rien à l'affichage pendant le calcul. |
Deux conditions initiales sur des machines très différentes
peuvent donner des résultats différents.
Les calculs ne sont pas les mêmes selon la vitesse de la machine. |
Certaines personnes m'ont signalé un mouvement un peu rapide des billes, et un freinage un peu brusque. Ce problème est du à la synchronisation entre le temps physique avec lequel les calculs ont été effectués, et le temps de l'affichage. Tout se passe en fait comme si le film du mouvement des billes était passé en accéléré. Essayez sur votre magnétoscope de visionner un coup de billard, et vous retrouverez ce comportement. Il faut en fait que je donne la possibilité de corriger autour d'une valeur raisonnable le ratio entre le temps "affichage" et le temps physique. Cela réglera le problème et permettra aux possesseurs de cartes très rapides d'augmenter le taux de rafraîchissement.
.../ A COMPLÉTER EN CHANTIER
Conservations diverses (énergie, Qte de Mvt) ...
../...
exemple d'avantage de l'utilisation du référentiel barycentrique.
![]() |
Les deux billes se dirigent l'une vers l'autre. Si à chaque instant on désigne le centre de gravité des deux billes, on voit (et on prouve) que si les billes se déplacent en ligne droite, à vitesse constante, le centre de gravité, lui aussi se dirige en ligne droite. Il y a de nombreuses curiosités dans le repère barycentrique, ainsi la somme des quantités de mouvements (vitesse x masse) est nulle. Et ce à tout moment. Et bien d'autres choses faciles à démontrer. Par ailleurs, on montre que lors d'un choc sans frottement (bonne approximation, le coefficient de frottement entre deux billes est très faible, et il sera possible de simuler l'effet d'engrenage après avoir résolu le choc), la vitesse tangentielle est conservé, seule la vitesse normale subit une discontinuité. Les directions tangentielle et normale se rapportent au plan tangent aux billes lors du choc. Il y aura contact si la distance a un instant donné entre les
deux billes est plus petite qu'un diamètre. C'est simple non ?.
|
![]() |
Sur ce schéma, une bille animée d'une vitesse dont la
direction varie va peut être rencontrer une bille immobile. Si le
pas de temps d'intégration est assez grand, on se retrouve avec
une situation comme représentée sur le dessin. On calcule
des positions tous les "dt", et le choc peut se produire entre deux positions.
(entre t et t+dt). Il faut donc dans ce cas, trouver une solution, soit
pour prédire qu'il risque d'y avoir bientôt un choc, soit
pour "reculer" dans le temps une fois qu'on sait qu'il y a eu choc.
On pourrait se poser la question : est-ce bien nécessaire de calculer avec autant de précision l'instant du choc ?. C'est nécessaire si on veut jouer correctement des "coups durs", ou des coups très rapides. Je reviendrai sur ces aspects plus loin. Le cas représenté ci-dessus est encore un cas simple. On peut avoir deux billes qui décrivent des trajectoires non linéaires. Détecter les chocs devient dans ce cas une part importante des calculs à chaque itération.
|
Dans les deux cas, le frottement est une force qui s'oppose au mouvement,
ou qui empêche ce mouvement si les objets sont initialement à
l'arrêt. Le frottement dissipe en fait de l'énergie, le plus
souvent sous forme de chaleur.
On distingue encore dans ce que l'on appelle frottement solide plusieurs
types de frottements.
![]() |
Un objet est posé sur un plan. En pointillé est représenté
le cône dans lequel la réaction du plan doit rester.
Le demi angle de ce cône est l'angle alpha tel que tangente(alpha)=mu. mu étant le coefficient de frottement à sec. |
![]() |
Le même problème, cette fois ci sur un plan incliné.
Dans les deux cas, la force de réaction fait un angle inférieur ou égal à la valeur limite. Si 'objet est plus lourd, la réaction fait toujours le même angle avec la normale au plan. Seule l'angle entre la réaction et la normale au plan incliné ne change pas |
![]() |
Maintenant, l'angle du plan incliné est supérieur à
l'angle max. du cône de frottement. La réaction fait un angle
avec la normale au plan égal à l'angle de frottement. La
somme (vectorielle) des deux forces (poids et Réaction) est une
force dirigée vers le bas et parallèle au plan. Le solide
glisse.
A noter que des que le mouvement apparaît, la réaction va passer de l'angle maximal autorisé par le frottement statique à l'angle max. autorisé par le frottement à sec. |
![]() |
Une bille posée immobile sur un plan. La réaction du
plan passe par le centre de gravité de la bille.
La résultante (somme vectorielle) P+R est nulle : pas de mouvement. |
![]() |
Un coulé.
La vitesse de rotation de la bille est supérieure à la valeur de roulement qui vaut V/R. La vitesse du point de la bille en contact avec le sol est dirigée vers l'arrière. La force de frottement est opposée en direction à la vitesse de glissement, donc dirigée vers l'avant. R est tel que en projection sur un axe verticale, elle s'oppose au poids
P, et fait un angle alpha (dont la tangente vaut le coefficient de glissement
à sec) avec la normale au plan de contact.
|
![]() |
Un rétro.
même explication que pour le coulé. Un point important à noter toutefois. J'ai dit que le frottement tendait toujours à s'opposer au mouvement. Or dans ces exemples, et plus particulièrement pour le coulé, on peut croire que le frottement a un rôle "moteur". Il n'en est rien. Le fait est que le frottement freine ici le mouvement de rotation, et transfert une partie de cette rotation en translation. Mais globalement, il y a dissipation d'énergie |
![]() |
Ça roule.
Le roulement de glissement se manifeste sous la forme d'un couple qui tend à freiner la rotation. La vitesse "linéaire" s'ajuste de telle façon à ce qu'on ait toujours un glissement nul. Donc le couple fait baisser Oméga. Et comme V est contrainte à rester égale à Oméga x Rayon, V diminue elle aussi. |
Quelques valeurs du coefficient de frottement sur des matériaux
secs, juste pour donner l'ordre de grandeur.
Vous trouverez des valeurs "exactes" pour de nombreux matériaux
dans des conditions diverses (mouillé, graissé) dans des
formulaires techniques (Par exemple le GIECK).
On distingue les deux coefficients de frottement dans le tableau ci-dessous:
(j'essaierai de compléter ce tableau lorsque j'aurai d'autres
valeurs).
Matériaux | Coeff. glissement | Coeff. adhésion |
Bois / Bois | 0,15 ... 0,4 | 0,4 ... 0,6 |
Pneu / Asphalte | 0,5 | ? |
Pneu / Béton | 0,6 | ? |
Téflon / Téflon | 0,04 | ? |
Et quelques valeurs du coefficient de roulement:
Matériaux | Bras de levier de la résistance
au roulement en mm |
Pneu / asphalte | 0,10 |
Pneu / Béton | 0,15 |
acier / acier | 0,005 ... 0,01 |
bois / bois | 0,8 |
Un frottement que nous n'avons pas considéré, mais
qui reste important pour bien décrire le mouvement d'une bille de
billard, est le frottement de pivotement de la bille. A savoir, le couple
résistant qui s'exerce sur la bille lorsque celle ci tourne sur
elle même comme une toupie.
Si on n'en tient pas compte, cela revient a dire que l'effet (droite
ou gauche) que l'on applique à la bille lors du choc Queue/Bille
reste invariant lors du mouvement. En effet, la réaction du tapis
est une force horizontale (dans le plan du tapis), et ne contribue pas
au changement de la composante verticale du vecteur rotation.
Une bille mise en mouvement avec un effet à droite ou à
gauche voit cet effet diminuer au fil du temps. Cette diminution n'est
pas exprimable si on ne tient compte que du glissement "linéaire"
du point de contact entre la bille et le tapis. Voici donc une première
entorse aux équations physiques simplifiées utilisées
pour décrire le mouvement.
Il faut introduire un terme correctif, ou alors introduire une nouvelle
loi dans nos équations.
Tant qu'a faire, on va choisir de modéliser un phénomène simple, mais dont les équations ne s'intègrent pas formellement. (i.e. on ne peut pas trouver de formule générale.)
Un pendule simple.
Soit un pendule constitué d'une tige de masse négligeable, de longueur L, accrochée à un point fixe O, et à laquelle on suspend une masse ponctuelle M.
On écarte la masse d'un angle Alpha avec la verticale, et on veut calculer le temps mis par la masse pour revenir à la verticale du point O. (la demi période).
Écrivons les équations.
Si alpha est l'angle de la barre avec la verticale, g, l'accélération de la pesanteur, alors :
M g L sin(alpha) = - (M L**2) d**2 / dt**2 (alpha)
(M L**2 , lisez M L au carré) est le moment d'inertie du pendule
au point O
d**2 / dt**2 (alpha) est l'accélération angulaire (lisez
: d 2 alpha sur d t 2 )
Ceci est l'écriture de la relation fondamentale de la dynamique appliquée à un corps en rotation.
Si on considère que alpha est petit, alors on peut approximer sin(alpha) par alpha, et l'équation a pour solution générale:
alpha(t) = alpha0 * cos (omega * t + phi)
ou alpha0 et phi sont fixes par les conditions initiales. Par exemple,
si le pendule est lâché sas vitesse initiale d'un angle A,
au temps t=0, alors on écrit
alpha(0) = alpha0 * cos(phi) = A et d/dt
(alpha(t)) = - omega alpha0 sin(phi) = 0
ce qui donne : phi=0 et alpha0 = A.
Maintenant, si alpha peut être amené à devenir grand, cette approximation n'est plus valable.
Nous allons linéariser le problème, en partant
du principe qu'entre deux intervalles de temps dt, alpha va peu varier.
Ainsi, on va approximer la courbe alpha(t) en une succession de petits
segments de droite, alpha(t0)->alpha(t1) puis alpha(t1)->alpha(t2)
....
On va prendre t0=0, t1=dt, t2=2*dt....
Si dt tend vers 0, la longueur de nos petits segments de droite tend
vers 0, et la ligne brisée ainsi constituée tend vers la
courbe alpha(t).
Tout ceci est très intuitif, mais les justifications mathématiques
existent et demandent de la rigueur et du savoir faire. (Hors de notre
propos).
Allons-y : Pour rendre les choses plus "physiques", je vais faire
appel à un "computeur", et je vous livre le programme informatique
que j'écris en ce moment même sur ma calculette. (Casio FX-850)
On est en radians...
10 INPUT "A="; A : A=A*PI/180
20 INPUT "DT=";DT
25 G=10: L=10
30 ALPHA=A : T=0 : OME=0
90 REM ***** Boucle principale
100 ACC=-G*SIN(A)/L
110 OME=OME+DT*ACC
120 ALPHA=ALPHA+OME*DT
140 REM **** Test d'arret
150 IF(ALPHA<0) THEN GOTO 200
160 T=T+DT
170 GOTO 100
200 REM **** Impression u resultat : 1/4 periode
210 PRINT "T=";T
215 PERIODE = 2*PI*SQRT(L/G)
220 PRINT "Ecart : ";T- 0.25 * PERIODE;
230 END
Avec ces valeurs : L/G = 1 , la période théorique est 2PI. Le mouvement que l'on décrit ici fait un quart d'une période, on devrait donc trouver T=PI/2. Ce que l'on trouve, mais après un temps très très long si on choisit une bonne précision (un dt petit).
Voici les résultats obtenus : pour différents angles,
et les écarts avec le résultat théorique de PI/2.
PI/2 vaut a peu près : 1.57079632...
Angle initial (degrés) | 0.1 | 1 | 10 | 60 |
dt=0.01 | 1.57 | 1.57 | 1.57 | 1.69 |
dt=0.001 | 1.571 | 1.571 | 1.574 | 1.686 |
dt=0.0001 | 1.5708 | 1.5708 | 1.5738 | 1.6858 |
dt=0.00001 | 1.5708 | 1.57083 | 1.57379 | 1.68575 |
J'aime autant vous dire que je n'ai pas utilisé la calculatrice
pour faire ce tableau.
Lorsque le pas de temps est 0.00001, et que la mesure est 1.68575,
cela signifie que l'on a fait 168575 itérations. Ce n'est rien sur
un pc, mais il faut quand même faire attention.
Que nous apprend cet exemple:
Primo, que l'approximation pour les petits angles est plutôt
bonne.
Secundo, que pour des grands angles, il faut vraiment faire attention
avec cette approximation.
Tertio, que ce problème s'intègre bien. Quand on augmente
la précision, on augmente le nombre de chiffres significatifs, mais
sans converger vers des résultats différents. Ce ne sera
pas toujours le cas avec tous les problèmes.
Il existe en effet des catégories de problèmes pour lesquels en déca d'un certaine précision, on ne peut absolument pas garantir que les résultats de calcul ont le moindre sens. Méfiance donc.
Le conseil que je vous donne est de toujours tester vos résultats
sur des cas simples, reproductibles, et ce avec des pas d'intégrations
différents, et ci possible avec des méthodes différentes.
Méfiez vous aussi des pas de temps trop petits, car parfois, on
ne fait que cumuler (intégrer) les erreurs de calcul....
Accélération(t) = (Vitesse(t+dt) - Vitesse(t)) / dt
Vitesse(t) = (Position(t+dt) - Position(t)) / dt
ce qui donne, connaissant l'accélération au temps t,
Vitesse(t+dt) = Vitesse(t) + Accélération(t) * dt
et
Position(t+dt) = Position(t) + Vitesse(t) * dt
Comme on le voit sur ces relations, on déduit les nouveaux paramètres du système au temps t+dt en fonction des paramètres en t. On progresse de proche en proche de cette façon pour calculer ce qui se passe au temps T, en partant de la connaissance des paramètres en To=0.
On peut se poser quelques questions:
1) Pourquoi ne pas tenir compte pour calculer ce qui se passe en t+dt
de ce qui s'est passé aux temps t, t-dt, t-2dt ...
Intuitivement, on a l'impression que les formules seraient plus "exactes".
2) Pourquoi "regarder" toujours en arrière dans le temps pour
calculer ce qui va se passer. Est il possible de "prédire" ce qui
va se passer, puis de corriger ensuite cette prédiction ?
3) Peut on aller vite quand "ça va tout droit" et freiner "quand
on prend des virages" ?
Les mathématiciens, dont le domaine est le calcul numérique,
ont depuis longtemps apporté des réponses à ces questions
sous la forme de schémas numériques plus ou moins complexes.
Par exemple, la relation (Vitesse(t+dt) = Vitesse(t) + Accélération(t)
* dt) est une relation linéaire en dt, ce qui revient à
dire qu'au temps t, on calcule la vitesse en t+dt (on dessine la courbe
Vitesse(t)) en prolongeant cette courbe par un segment de droite dont la
pente est donnée par Accélération(t).
Il existe des schémas plus précis où cette fois,
on ne considère plus la droite tangente à la courbe, mais
la "parabole tangente" à la courbe.
La question 2 a conduit à l'écriture de schémas dits "prédicteurs correcteurs", où on va tenter à chaque pas de temps de corriger l'erreur en répondant à des questions du style : A-t-on été trop optimiste, ou trop pessimiste. La réponse à cette question va conditionner les calculs pour les pas de temps suivants.
La question 3 est liée aux précédentes, en effet,
plus on colle à la courbe que l'on cherche à construire,
plus on peut aller vite sans commettre d'erreur, et si on dispose de prédicteurs
et de correcteurs, il est possible de de poser des questions du style "est-ce
que là, j'ai pas été un peu vite". Répondre
à cette question revient à se donner la possibilité
de reculer un peu et d'avancer plus doucement. Donc de régler sa
vitesse.
Maintenant, pourquoi et quand se pose t'on ces questions?
Principalement quand on cherche à calculer des phénomènes
complexes. Car alors, de nombreux calculs sont requis à chaque pas
de temps, les pas de temps sont petits, et alors, calculer ce qui va se
passer dans 2 secondes, lorsque le pas de temps est de 0.000001 seconde
revient á faire des millions de calculs. (imaginez un peu au passage
la complexité des modèles de la météorologie
nationale !). Dans ces cas, tout ce qui peut revenir à augmenter
le pas de temps sans perte de précision est le bienvenu.
Mais j'aime autant vous dire que ce gain de temps se paye en complexité
des schémas....
Si des personnes sont intéressées, je donnerai sur le même exemple du pendule simple, des schémas plus "sexy", et les comparaisons en temps de calcul pour une même précision.
Retenez quand même que le choix d'un schéma numérique est quelque chose d'annexe dans notre cas. Si un schéma simple donne les résultats attendus, et qu'il est trop lent, alors on peut agir. Se casser la tête avant d'avoir un "truc" qui marche est une perte de temps et d'énergie. Sauf si vous êtes "numéricien".
Vous vous êtes fixe un but qui est par exemple de simuler la formation
des bouchons en accordéon sur un autoroute, ou la dynamique d'un
champ d'étoiles, ou encore que sais-je, le mouvement de billes sur
un billard. Vous avez établi tant bien que mal les équations
qui régissent ces phénomènes.
Vous avez fait la distinction entre le frottement de cohésion
et le frottement à sec. Parfait. Vous avez introduit le frottement
de roulement. Vous avez même pense à tenir compte du sens
du mouvement pour reproduire la différence de frottement selon le
sens des fils du tapis. Excellent. Au passage, tout ceci vous éloigne
à tout jamais de la belle trajectoire parabolique qu'est censée
parcourir la bille qui ne roule pas, puisque cette trajectoire parabolique
est le fruit de calculs menés avec des hypothèses beaucoup
plus simples.
Vous avez bien sur tenu compte du fait que lorsqu'une bille tourne
sur elle même, il faut tenir compte d'un frottement particulier qui
représente le frottement de la partie de la bille en contact avec
le tapis. Adieu le contact ponctuel grâce à qui une bille
tournerait comme une toupie éternellement puisque la vitesse du
point de contact Bille/Tapis est nulle...
Vous avez tenu compte de l'écrasement des bandes qui fait
que plus on tape fort sur une bande, moins celle ci restitue l'angle d'arrivée.
Vous avez même tenu compte du fait que les bandes sont différentes
au milieu du billard et prés des coins où elles sont moins
usées. Parfait.
Quand aux rebonds successifs d'une bille sur le tapis, il est vrai
que ne pas en tenir compte rend les coups de billard artistique difficilement
concevable.
Sincèrement, si vous vous faites toutes ces remarques, je doute
que le simulateur ne dépasse un jour le stade du projet. Non qu'il
ne faille pas en tenir compte, mais ceci doit se faire graduellement, et
dans la limite du raisonnable.
Ensuite, présentés tels quels, je doute que les phénomènes
que je viens de mentionner soient "simulables". Tout ceci est bien trop
complexe et nécessiterait des mois (années) de labeur. Pour
parvenir à quoi ?. Certainement pas à un simulateur, mais
à un monstre de calculs.
Un peu comme ci le moteur de Flight Simulator était le modèle
informatique qui a servi à valider le dernier boeing....
Vous voulez ma façon de voir les choses ?
Ceci dit, bon jeu, et si ces quelques pages ont éveillé
chez vous l'envie de vérifier sur un billard que la physique est
respectée, si vous regardez maintenant le balancier de votre horloge
avec un regard plein de respect et d'attention, ou si l'envie de voir des
choses faites par vous sur votre pc vous démange, j'en suis heureux.
Je n'ai pas de livre "marrant" sur la simulation sur ordinateur
à vous conseiller. J'en ai cherché, pas trouvé. Sinon,
en livres de cours:
- Les livres de mécanique de prépa, j'adorais tous les
"Lumbroso". (Mon préféré reste quand même
la Thermodynamique.)
- Les livres de mécanique pour DUT BTS
- Des ouvrages de mathématiques appliquées. Souvent ces
ouvrages ne donnent que les différentes façons de résoudre
numériquement les problèmes. Et la tache est déjà
énorme. Il manque à mon sens dans de nombreux livres, des
exemples concrets. Par exemple un bête programme en basic pour simuler
un pendule double....
Si vous êtes curieux, que vous n'avez pas de librairie universitaire à portée de bus, et que vous aimez regarder avant d'acheter, je vous conseille ces quelques livres qui me semblent très intéressants sur ces sujets et qui traitent de nombreux problèmes, pas cher, très bien faits et disponibles partout :
Copyright © Laurent Buchard 1999-2000