quaternions are not an easy subject. Writing the code for a quaternion spherical linear interpolation here would take too much space. You could have my library if you want it.

I just discovered that there's a way to do it with vectors
[pascal]
function slerp2(src, dest: tvec3; t: single): tvec3;
var d,s1,s2,s3,ld,l: single;
begin
d := arccos(src.x*dest.x+src.y*dest.y+src.z*dest.z);

s1 := sin((1-t)*d);
s2 := sin(t*d);
s3 := sin(d);

result.x := (s1/s3)*src.x+(s2/s3)*dest.x;
result.y := (s1/s3)*src.y+(s2/s3)*dest.y;
result.z := (s1/s3)*src.z+(s2/s3)*dest.z;
{l := sqrt(result.x*result.x+result.y*result.y+result.z* result.z);
result.x := result.x/l;
result.y := result.y/l;
result.z := result.z/l; }//uncomment this to normalize the resulting vector
end;[/pascal]