add quaternion-based rotation