I am trying to emulate a vehicle taking a left turn in an intersection and from what I can tell Quaternion.Slerp is what I want but I can't seem to figure out how to use it correctly. My biggest difficulty is figuring out how to convert from Vector3 to Quaternion and back again. I also am not sure what the 3rd parameter is in Quaternion.Slerp. I'm using a Lerp for the position and attempting a slerp for the rotation. Although I probably want a slerp for the position as well. Here is my example:

      protected override void Initialize()
         PosA = EntityManager.Find(PositionA).FindComponent<Transform3D>();
         PosB = EntityManager.Find(PositionB).FindComponent<Transform3D>();
         PosC = EntityManager.Find(PositionC).FindComponent<Transform3D>();
         PosD = EntityManager.Find(PositionD).FindComponent<Transform3D>();
         PosE = EntityManager.Find(PositionE).FindComponent<Transform3D>();
         Waypoints = new Transform3D[] { PosA, PosB, PosC, PosD, PosE };
      private float totalGameTime = 0;
      float currentTimeOnPath = 0;
      protected override void Update(TimeSpan gameTime)
         // keep track of game time as well as path time
         totalGameTime += (float)gameTime.TotalSeconds;
         currentTimeOnPath += (float) gameTime.TotalSeconds;

         Vector3 startPosition = Waypoints[CurrentWaypoint].LocalPosition;
         Vector3 endPosition = Waypoints[CurrentWaypoint + 1].LocalPosition;
         // lerp to destination
         float pathLength = Vector3.Distance(startPosition, endPosition);
         float totalTimeForPath = pathLength / Speed;
         Transform.LocalPosition = Vector3.Lerp(startPosition, endPosition, (float)(currentTimeOnPath / totalTimeForPath));

         Vector3 startRotation = Waypoints[CurrentWaypoint].LocalRotation;
         Vector3 endRotation = Waypoints[CurrentWaypoint].LocalRotation;
         Quaternion startR;
         Vector3 up1 = Vector3.Up;
         Quaternion endR;
         Vector3 up2 = Vector3.Up;
         Quaternion.CreateFromLookAt(ref startRotation,ref up1,out startR);
         Quaternion.CreateFromLookAt(ref endRotation, ref up2, out endR);
         Quaternion result = Quaternion.Slerp(startR, endR, 1);
         Vector3 resultV;
         Vector3.FromQuaternion(ref result, out resultV);
         Transform.LocalRotation = resultV;
         if(currentTimeOnPath / totalTimeForPath >= 1 && CurrentWaypoint < Waypoints.Length - 2)
            currentTimeOnPath = 0;
Please refer me to an example or correct my code. Thank you.