Physique · Bille dans un anneau qui tourne

Pourquoi faire tourner l’anneau ne change rien

La règle

Des billes rebondissent dans un anneau qui tourne, percé d’une ouverture qui s’agrandit. La rotation ne fait que déplacer l’ouverture.

Lecture depuis YouTube après un clic.

Two Balls, One Growing Hole Watch Who Escapes First

Pourquoi ça marche

Des billes rebondissent sous l’effet de la gravité dans un anneau percé d’une ouverture, et l’anneau tourne. On pourrait s’attendre à ce que la rotation projette les billes, mais un anneau sans frottement qui tourne les fait rebondir exactement comme un anneau immobile. La rotation ne fait que faire passer l’ouverture devant elles.

rebond : v → v − 2·(v · n)·nla paroi bouge le long de t ⊥ n, donc (v · n) ne dépend pas de la rotation

Construis-le toi-même

Python 3 · numpy · matplotlib

Une bille soumise à la gravité dans un anneau dont l’ouverture de 18° fait un tour toutes les 4 secondes, jusqu’à ce qu’elle s’échappe.

spinning-ring.py
"""A ball under gravity in a ring with a gap that spins; the bounces are elastic and without friction.
Run: python spinning-ring.py   (needs: pip install numpy matplotlib)
"""
import numpy as np
import matplotlib.pyplot as plt

plt.style.use("dark_background")

R, ball, g = 1.0, 0.05, 9.81  # ring radius (m), ball radius, gravity
gap, spin = np.radians(18), 2 * np.pi / 4  # an 18 degree gap, one turn every 4 seconds
p, v = np.array([0.3, 0.2]), np.array([1.8, 0.7])
dt, t, track = 0.0005, 0.0, []

while t < 60:
    v[1] -= g * dt
    p = p + v * dt
    t += dt
    track.append(p.copy())
    r = np.linalg.norm(p)
    if r > R - ball:  # the ball touches the wall, or is at the gap
        angle = np.arctan2(p[1], p[0])
        centre = -np.pi / 2 + spin * t  # where the gap is now
        off = abs((angle - centre + np.pi) % (2 * np.pi) - np.pi)
        if off < gap / 2 - ball / R:  # all of the ball fits through: out
            break
        normal = p / r
        v = v - 2 * np.dot(v, normal) * normal  # the bounce: the spin plays no part in it
        p = normal * (R - ball)

track = np.array(track)
print(f"escaped after {t:.1f} s" if t < 60 else "still inside after 60 s")
plt.figure(figsize=(6, 6))
plt.plot(track[:, 0], track[:, 1], color="#5eead4", linewidth=0.4)
plt.gca().add_patch(plt.Circle((0, 0), R, fill=False, color="white"))
plt.axis("equal")
plt.axis("off")
plt.show()

# Try: spin = 0 and centre = -np.pi / 2 (a still gap at the bottom): the bounces stay the same

Essaie : Mets spin = 0 et déplace l’ouverture en bas : les rebonds restent les mêmes, seule la sortie change.

Apprends ce script ligne par ligne, avec des exercices et un quiz → · lance-le dans Google Colab (en anglais) →

Les maths, telles que le film les raconte

Lire les notes du film (de YouTube, en anglais)

Two balls bounce under gravity inside a circle that spins once every four bars of the music. Every bounce is perfectly elastic — no energy is lost, so the balls never calm down. One thing may surprise you: the spinning changes nothing about the bounces.

The wall of a rotating circle only ever moves sideways, along itself, so it cannot push a ball in or out; a frictionless spinning ring bounces exactly like a still one. The only thing the rotation does is carry the hole around — and because gravity keeps the balls near the bottom, their chances come each time the hole sweeps past the floor, once per revolution. The hole widens at the start of each round (8°, 12°, then 18°), and a ball only gets out if the whole of it fits through the gap at the moment it arrives.

The run you are watching was chosen from 500 simulated starting conditions for one reason: the first escape lands in the final seconds, and the other ball is still inside when the music ends.

D’après la description de Two Balls, One Growing Hole (en anglais).

Shorts

Sources