#!/usr/bin/env python3
"""
true_atomic_balls.py

What if the ENTIRE ATOM spins as a ball?
Not planetary motion - true rotation!
"""

import numpy as np
import scipy.constants as const

def analyze_whole_atom_spinning():
    """The entire atom as a spinning ball"""
    
    print("TRUE ATOMIC BALL MODEL")
    print("="*60)
    print("The WHOLE ATOM spins, not just electron orbiting")
    print()
    
    # Constants
    hbar = const.hbar
    me = const.m_e
    mp = const.m_p
    c = const.c
    k_e = const.k  # Coulomb constant
    e = const.e
    
    # Hydrogen atom
    r_atom = const.physical_constants['Bohr radius'][0]
    
    # Total mass (nucleus + electron)
    m_total = mp + me
    
    # If the whole atom spins with angular momentum ℏ
    I_atom = (2/5) * m_total * r_atom**2
    omega = hbar / I_atom
    
    # Surface velocity
    v_surface = omega * r_atom
    
    # Force on surface
    F_centripetal = m_total * omega**2 * r_atom
    
    # Compare to Coulomb force
    F_coulomb = k_e * e**2 / r_atom**2
    
    print(f"Whole hydrogen atom spinning:")
    print(f"  Radius: {r_atom*1e12:.1f} pm")
    print(f"  Total mass: {m_total:.3e} kg")
    print(f"  Angular velocity: ω = {omega:.3e} rad/s")
    print(f"  Surface velocity: v = {v_surface:.3e} m/s = {v_surface/c:.6f}c")
    print(f"  Centripetal force: {F_centripetal:.3e} N")
    print(f"  Coulomb force: {F_coulomb:.3e} N")
    print(f"  Ratio F_cent/F_coul: {F_centripetal/F_coulomb:.3e}")
    
    # What about energy?
    E_rotation = 0.5 * I_atom * omega**2
    E_coulomb = -k_e * e**2 / r_atom
    E_ionization = 13.6 * const.eV
    
    print(f"\nEnergy analysis:")
    print(f"  Rotational energy: {E_rotation/const.eV:.3f} eV")
    print(f"  Coulomb energy: {E_coulomb/const.eV:.3f} eV")
    print(f"  Ionization energy: {E_ionization/const.eV:.3f} eV")
    
    # The profound question
    print("\n" + "="*60)
    print("PHILOSOPHICAL QUESTIONS:")
    print("1. Is the electron 'spread out' over the atomic volume?")
    print("2. Does the whole atom rotate as one quantum object?")
    print("3. Is 'orbital' motion just our interpretation of spin?")
    
def compare_models():
    """Compare planetary vs ball models"""
    
    print("\n\nMODEL COMPARISON")
    print("="*60)
    
    # Constants
    hbar = const.hbar
    me = const.m_e
    r = const.physical_constants['Bohr radius'][0]
    
    # Planetary model (current)
    L_orbital = hbar  # Orbital angular momentum
    v_orbital = L_orbital / (me * r)
    
    # Ball model (proposed)
    I_ball = (2/5) * me * r**2
    omega_ball = hbar / I_ball
    v_ball = omega_ball * r
    
    print(f"PLANETARY MODEL (electron orbits nucleus):")
    print(f"  Orbital velocity: {v_orbital/const.c:.6f}c")
    print(f"  All angular momentum in orbit")
    
    print(f"\nBALL MODEL (whole atom spins):")
    print(f"  Surface velocity: {v_ball/const.c:.6f}c") 
    print(f"  Distributed angular momentum")
    print(f"  Factor difference: {v_orbital/v_ball:.1f}")

def main():
    analyze_whole_atom_spinning()
    compare_models()
    
    print("\n" + "="*70)
    print("REVOLUTIONARY CONCLUSION:")
    print("We've been doing PLANETARY physics in atoms!")
    print("True BALL physics gives different results")
    print("Maybe quantum mechanics hides this distinction?")

if __name__ == "__main__":
    main()
