Física · Bola dentro de um anel giratório

Por que razão girar o anel não muda nada

A regra

Bolas ricocheteiam dentro de um anel giratório com uma abertura que cresce. A rotação só faz a abertura dar a volta.

É reproduzido a partir do YouTube depois de um clique.

Two Balls, One Growing Hole Watch Who Escapes First

Por que razão funciona

Bolas ricocheteiam sob a gravidade dentro de um anel com uma abertura, e o anel gira. Seria de esperar que a rotação atirasse as bolas de um lado para o outro, mas um anel giratório sem atrito faz as bolas ricochetear exatamente como um anel parado. A única coisa que a rotação faz é levar a abertura a passar por elas.

ricochete: v → v − 2·(v · n)·na parede move-se ao longo de t ⊥ n, por isso (v · n) não depende da rotação

Construa-o em Python

Python 3 · numpy · matplotlib

Uma bola sob a gravidade num anel cuja abertura de 18° dá uma volta a cada 4 segundos, até a bola escapar.

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

Experimente: Defina spin = 0 e mova a abertura para baixo: os ricochetes continuam iguais, só muda a saída.

Aprenda este script linha a linha, com exercícios e um quiz → · execute-o no Google Colab (em inglês) →

A matemática, tal como o filme a conta

Ler as notas do próprio filme (do YouTube, em inglês)

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.

Da descrição de Two Balls, One Growing Hole (em inglês).

Shorts

Fontes