Best way to morph between waveforms
this is what we sometimes call "Vector Synthesis" and other times call "Wavetable Synthesis".  linear crossfading between equal-sized circular lookup tables usually suffices.

but make sure the waveforms are aligned.  you can circularly delay (or "rotate") one lookup table relative to the other.  choose a relative rotation so that the cross-correlation between the two waveforms is maximum.  if you somehow crossfade between a sine wave and a square wave where the fundamental of the square wave is outa phase with the sine, you'll get a glitch in the crossfade.