- Le circuit de train Duplo construit par l’enfant semble former une boucle fermée, mais le problème consiste à déterminer, à partir des conditions d’angle et de position, si les pièces ont été forcées pour s’emboîter
- La méthode de vérification mathématique consiste à confirmer que la différence entre le nombre de virages à gauche et à droite des pièces courbes est un multiple de 12, puis à calculer si la somme des vecteurs de déplacement de chaque pièce est nulle
- La solution la mieux notée conclut que la condition d’angle est satisfaite, mais que la somme des déplacements vaut
4.5 -3 -2 0.5et non 0, donc qu’il ne s’agit pas d’une boucle sans contrainte - Pour l’ajuster précisément, il faut retirer ou ajouter certaines pièces ; si l’on n’ajoute qu’une seule pièce, une option consiste à insérer une section droite
2-2, par exemple derrière la première courbe grise - En pratique, on peut aussi juger si la tension est excessive en observant la planéité du circuit, la flexion ou l’écartement des raccords, ainsi que d’éventuels déraillements ou décrochages des wagons pendant la circulation
Déterminer si un circuit Duplo a été refermé de force
- L’auteur de la question aimait bien le circuit de train Duplo construit par les enfants, mais voulait vérifier si les pièces subissaient une tension excessive risquant de les endommager
- Le circuit est composé de rails courbes et de rails droits
- Le passage à niveau est en pratique traité comme l’équivalent d’un rail droit
- 12 rails courbes forment naturellement un cercle, mais si l’on force 13 rails courbes à former une boucle circulaire, cela peut mettre le circuit sous tension
- La question porte sur deux points
- s’il existe une méthode rapide et logique pour déterminer la présence de tension
- et, pour la réduire, quelle pièce et quel emplacement seraient les meilleurs si l’on retire ou ajoute une seule pièce
Condition angulaire : différence entre les courbes à gauche et à droite
- Le premier test consiste à vérifier une éventuelle incohérence angulaire
- Comme 12 pièces courbes Duplo forment un cercle complet, la différence entre le nombre de courbes vers la gauche et vers la droite doit être un multiple de 12
- La solution la mieux notée part de l’intersection et suit l’orientation dans le sens antihoraire, concluant que la disposition proposée satisfait cette condition
- Une autre réponse résume cela en disant que, lorsqu’il n’y a que des courbes, le « nombre de pièces tournant vers l’intérieur moins le nombre de pièces tournant vers l’extérieur » doit être de 12 pour que l’assemblage tombe juste
- Cette condition reste toutefois proche d’une condition nécessaire : même si elle est satisfaite, cela ne garantit pas une configuration sans contrainte
Condition de position : la somme des vecteurs de déplacement doit être nulle
- Le second test vérifie une éventuelle incohérence de position en additionnant les vecteurs de déplacement entre le début et la fin de chaque pièce pour voir si la somme est nulle
- En prenant la longueur d’une pièce droite égale à 1, on peut calculer le vecteur des pièces droites selon leur orientation
- la pièce droite
0-0à l’angle 0 vaut(1, 0) - la pièce droite
1-1à l’angle 1, c’est-à-dire 30 degrés, vaut(cos 30°, sin 30°) = (√3/2, 1/2)
- la pièce droite
- Les pièces courbes sont traitées comme ayant un rayon égal à deux fois la longueur d’une pièce droite
- la courbe
0-1vaut(2 sin 30°, 2(1 - cos 30°)) = (1, 2 - √3)
- la courbe
- Comme les coordonnées de toutes les orientations de pièces se décomposent en une partie rationnelle et une partie rationnelle multipliée par
√3, la solution les représente sous forme d’une liste de 4 nombres à additionner - Pour qu’une boucle se referme sans tension, la somme finale de ces 4 nombres pour toutes les pièces doit être constituée de quatre zéros
Résultat du calcul : la disposition actuelle ne se referme pas exactement
- La somme obtenue pour toutes les pièces de la disposition proposée est
4.5 -3 -2 0.5 - En déplacement réel, cela correspond à
(4.5 - 3√3, -2 + 0.5√3) - Cette valeur n’étant pas nulle, la disposition n’est pas dans un état sans contrainte
- Si l’on trace le trajet idéal issu du calcul, on n’obtient pas une boucle fermée mais une forme dont les extrémités sont décalées
- La réponse conclut qu’avec moins de 5 pièces, il n’est pas possible de compléter cette boucle
Proposition de correction : solution exacte et ajout d’une seule pièce
- Pour obtenir une solution exactement sans contrainte, il faut retirer certaines pièces spécifiques et en ajouter d’autres
- Une des solutions utilise la combinaison suivante
- retirer
10-9,9-10,5-5 - ajouter
1-1,8-8
- retirer
- La solution calcule que la combinaison
3-4 3-4 1-1 8-8 11-11fournit le déplacement nécessaire- trois autres combinaisons de 5 pièces produisent le même déplacement, mais elles entraîneraient un nombre impair de pièces courbes et donc une incohérence angulaire
- Si l’on veut une correction plus réaliste en ne modifiant qu’une seule pièce, une possibilité est d’ajouter une pièce
2-2- un emplacement d’exemple est derrière la première courbe grise
- Une autre méthode d’agencement plus simple consiste à placer les pièces droites par paires parallèles, puis à les repositionner du côté opposé à une distance correspondant à 6 unités nettes de courbure
Vérification pratique rapide : planéité, raccords et circulation réelle
- Avant même le calcul mathématique, le premier indice à observer est si le circuit repose bien à plat
- une boucle fermée de force peut se tordre légèrement en 3D au lieu de rester dans un plan en 2D
- La notion de « trop de tension » reste subjective, et les raccords peuvent tolérer un certain décalage latéral réparti sur l’ensemble de la boucle
- Une tension excessive peut se manifester au niveau des raccords
- certains raccords ne paraissent pas droits mais courbés
- l’écartement entre les rails est trop grand ou présente un décalage en marche d’escalier
- cela peut se vérifier au toucher
- Le test pratique final consiste à faire rouler le train
- si la circulation reste assez fluide et stable, le circuit supporte pour l’instant cette charge
- Une autre réponse propose un critère plus ludique : si, avec 2 à 4 wagons attelés, des wagons se décrochent ou déraillent, alors le circuit est trop tendu
1 commentaires
Avis sur Hacker News
J’ai une question Duplo/Lego : je me demande s’il existe un nom, en combinatoire, pour le problème consistant à compter le nombre de structures que l’on peut construire avec N briques Lego 1×M
Les pièces pouvant tourner librement sont considérées comme une même structure. Par exemple, avec deux briques Lego 1×2, on considère qu’il y a 2 agencements : le cas où elles sont reliées haut/bas par deux tenons, et le cas où elles sont reliées par un seul tenon. Avec une liaison à un seul tenon, une rotation libre de 270 degrés ou plus est possible ; la différence entre tenon gauche et tenon droit devient donc la même structure si l’on tient compte de la symétrie de rotation
On suppose des Lego « idéaux », avec des tolérances de fabrication nulles, et les techniques de montage illégales ne sont pas autorisées. Je me demande aussi si ce problème est bien défini, s’il existe une solution sous forme fermée, ou même un programme générateur
Quand N devient assez grand, les degrés de liberté en rotation semblent pouvoir créer des structures supplémentaires qui étaient cachées dans d’autres orientations de rotation, ce qui rendrait le générateur très complexe
https://arxiv.org/abs/math/0504039
https://www.tandfonline.com/doi/abs/10.4169/amer.math.monthl...
Pour le second, sci-hub suffit. Pour le cas en 2D, il y a aussi les travaux de Tricia Muldoon Brown
https://www.sciencedirect.com/science/article/pii/S0012365X1...
https://arxiv.org/abs/1608.01562
Il y a aussi les travaux d’Alexander M. Haupt
https://arxiv.org/abs/1810.10428
Il suffit de calculer à la main les premiers termes de la suite, puis de voir si elle est déjà dans la base
Pour le contexte, voir https://en.wikipedia.org/wiki/Lattice_protein ; nous passions beaucoup de temps à éliminer les solutions identiques après rotation et les auto-intersections. Il y a aussi pas mal de maths étonnamment intéressantes pour déterminer si une chaîne définie par des angles locaux s’intersecte elle-même dans l’espace 3D absolu
C’est un problème similaire, avec des points de liaison limités et le comptage des doublons en 3D
Exemple : https://math.stackexchange.com/questions/237998/p%C3%B3lya-s...
Avec un ami, on parlait souvent d’une question similaire : avec un ensemble fixe de rails courbes Duplo, combien de tracés de voie fermés différents peut-on faire
Les sections droites peuvent en général être ignorées, puisqu’on peut en ajouter par paires de chaque côté de boucles parallèles. Cela dit, il existe aussi des formes triangulaires intéressantes qui cassent ce motif
Mon ami a même écrit un programme qui cherchait effectivement les solutions ; il fonctionnait globalement bien et générait des tracés intéressants. Il n’a jamais réussi à ajouter les aiguillages
Il était souvent difficile de déterminer si deux tracés étaient identiques, et on en est finalement arrivés aux maths du problème des colliers : https://en.wikipedia.org/wiki/Necklace_problem
En tant qu’ingénieur mécanicien diplômé, je dirais qu’à strictement parler, le rail n’est pas en « traction ». Il est en flexion, c’est-à-dire dans une combinaison de traction et de compression
Si une explication plus détaillée est nécessaire, je peux continuer
La présentation approfondie des rails Duplo sur le site lié était plus intéressante
https://www.cailliau.org/Alphabetical/L/Lego/Duplo/Train/Rai...
Enfant, j’avais à la fois les « nouveaux » et les « anciens » rails Duplo noirs. Même à quatre ans, je me souviens que les anciens rails noirs étaient pénibles, et que je préférais largement les nouveaux
Du genre « gjryir frpgvbaf qb abg znxr na rknpg pvepyr, gurer vf n fznyy bireync, naq fb znxr n pv »
J’ai un enfant de cinq ans, donc j’assemble souvent des rails de train en bois BRIO dans toutes sortes de configurations.
Quand il étend la voie, je reste généralement quelques étapes derrière lui et je retouche discrètement le tracé pour éviter qu’il soit trop contraint. C’est un problème simple, mais assez amusant à résoudre, et c’est agréable de passer du temps avec lui.
Ils sont beaux et agréables à manipuler. Les trains sont lents, mais avec beaucoup de couple, ce qui donne une sorte de « sensation de masse » à l’expérience. Rien à voir avec beaucoup de jouets télécommandés qui vont trop vite pour leur taille et se coincent sur les tapis ou les seuils.
Moi aussi, mais je vois un peu mieux qu’eux où la traction s’exerce, alors j’essaie de corriger ces endroits.
Autrement dit, l’ensemble du système ne nécessite qu’un petit nombre entier de longueurs de rails droits différentes. À l’inverse, TrackMaster en demande beaucoup plus.
Je me demande si quelqu’un a déjà fraisé lui-même des rails BRIO. Peut-être pour créer des formes particulières impossibles à faire avec les pièces standard.
J’ai déjà fabriqué un véhicule banane compatible avec les rails BRIO, mais je n’ai pas encore essayé de fabriquer des rails.
L’analyse mathématique pourrait être plus simple. Il suffit de considérer chaque morceau de rail comme un vecteur en deux dimensions et de tous les additionner. Dans une configuration sans traction, la somme vaut (0, 0).
Pour mesurer la traction, on peut supposer que l’écart de position est réparti uniformément et le modéliser par la moyenne de tous les vecteurs. Ainsi, pour un même déplacement, moins il y a de morceaux, plus il est significatif.
On pourrait croire que cela ignore la rotation, mais elle est en fait incluse. Le vecteur effectif d’un morceau de rail représente à la fois l’orientation actuelle et le déplacement ajouté par ce morceau. Si on le modélise en code, le curseur possède un angle d’orientation et une position (x, y).
Côté maths liées, il y a le fait que la somme des angles extérieurs d’un polygone vaut 360 degrés, ce qui permettrait d’utiliser l’écart par rapport à 360 degrés comme autre mesure. Ce n’est pas utile ici, mais cela me fait aussi penser au nombre d’enroulement en analyse complexe : une manière de parcourir localement une courbe pour comprendre de quel côté se trouve « l’intérieur » et combien de fois la courbe entoure un point donné.
On pourrait créer une forme légèrement auto-intersectante qui mettrait cette portion sous traction, tandis qu’une portion complémentaire s’additionnerait comme l’opposé de la première, mais sans auto-intersection.
Il faudrait donc qu’il y ait 360/30 = 12 rails qui tournent à droite de plus qu’à gauche, ou l’inverse. Il faut bien les compter, mais on peut vite prendre l’habitude d’ajouter +1 ou -1 en suivant la voie. Si on obtient 12 à la fin, c’est parfait, et l’écart à 12 devient une estimation de la traction.
Les autres forums StackExchange sont excellents. Ce genre de questions, et les réponses qui en découlent, sont formidables.
Au fil des années, j’ai vu de super discussions dans l’aéronautique, l’expérience utilisateur et les mathématiques, avec de longues réponses détaillées pleines d’aperçus intéressants. Il y a encore quelques heures, un billet côté latin est passé sur HN.
Mais, au moins pour moi, Stack Overflow n’est plus comme ça. Avant, je posais des questions et j’y répondais, mais quelque chose a changé. J’ai eu l’impression que le site avait été accaparé par des modérateurs excessivement pointilleux, et aujourd’hui je n’y participe presque plus.
Si je comprends bien, le point faible dangereux est le col de l’ergot d’assemblage sur l’un des rails connectés.
Sur Duplo, les deux côtés de la liaison ont une cheville de verrouillage et un trou. En cas de fort désalignement, un côté de la cheville peut subir une pression latérale supplémentaire et se déformer ou casser.
Cela dit, ce genre de forte traction se produit probablement surtout quand on force le dernier raccord à se connecter ou à se verrouiller. Un enfant peut essayer de le faire quand un parent n’est pas à côté pour vérifier si l’assemblage est possible. Quand le parent s’en rend compte, il est probablement déjà trop tard, ou bien l’enfant a réussi et il n’y a plus rien à corriger.
Si le col de la cheville casse, c’est qu’il était simplement destiné à casser. Ce n’est pas grave. La deuxième cheville maintient encore l’assemblage. En revanche, si on n’en tire aucune leçon, cette section devient le maillon le plus faible.
Si, d’une manière ou d’une autre, on a réussi à l’insérer de force dans une boucle, très bien : il n’y a plus qu’à faire rouler la locomotive. Si les wagons ne se renversent pas sur l’espace forcé ou la section tordue, on continue ; sinon, on ajuste ou on reconstruit.
Quand j’étais petit, je comptais en suivant les rails. Je partais de 0, j’ajoutais 1 quand le rail tournait à gauche et je retirais 1 quand il tournait à droite.
Le résultat devait être quelque chose comme ±12, ±24, etc., parce que 12 pièces forment un cercle.
Il me semble qu’on peut vérifier la traction en ouvrant la boucle et en regardant le décalage entre la pièce de départ et la pièce d’arrivée. Cela suppose que le frottement de surface soit assez faible pour que les pièces puissent bouger.
Comme résolution de puzzle, on peut attribuer à chaque type de pièce un décalage de sortie et un angle de connexion pour la pièce suivante, partir des coordonnées (0, 0), parcourir les pièces en mettant à jour la position de la dernière pièce, puis vérifier le décalage entre la pièce de départ et celle d’arrivée.
Le résultat ressemblerait à l’image de la réponse. En revanche, mettre à jour la voie de manière à minimiser ce décalage est plus difficile.
À ce moment-là, on peut ajuster les pièces concernées et souvent refermer l’écart, qui s’est parfois agrandi. C’était un tracé façon scène de poursuite en train de The Wrong Trousers de Wallace et Gromit.
S’il y a de la traction, les extrémités des rails près de l’ouverture s’écarteront, mais j’ai du mal à imaginer que tout bouge.
« Je sais qu’on peut retirer une pièce et la remettre pour le sentir directement »
Le monter sur un sol lisse et plat puis saupoudrer de la poudre de shuffleboard pourrait aussi marcher.