(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 :