Physics can explain the rainbow