Rotate Camera GSAP

Something like this should work in case you don’t find anything more elegant:

  1. startVector = (startPos - originPos).normalize()
  2. endVector = (endPos - originPos).normalize()
  3. axisOfRotation = CrossProduct(startVector, endVector)
  4. angleOfRotation = arccos(DotProduct(startVector, endVector))
  5. use GSAP to interpolate the currentAngle between 0 and angleOfRotation over time
  6. on each iteration, use Vector3.applyAxisAngle to calculate the currentVector using the startVector, axisOfRotation, and currentAngle (do not modify the startVector)
  7. on each iteration, set currentCameraPosition = originPos + (currentVector * distance)

Also see [SOLVED] Move items around a sphere and Quaternion.setFromUnitVectors for a quaternion-based approach.