Both made mistakes. 1. Do not EVER get out of your car unless told to do so. 2. The cop mistook the cane for a weapon. 3. The vet didn't tell the officer what he was doing and didn't stop while the cop was talking / screaming at him.
It was an accident where both had faults (the guy for acting recklessly during a traffic stop and the cop for not getting better glasses). But the burden lies more on the guy to make the cop feel safe. Let the officer approach the car next time and just sit cozily in your driver's seat.