Faster spread_charge and gather_force: theta & dtheta calculation done on the fly