Combination RotateAround and RotateTowards

I want to rotate an object around it’s center position (not the same as the pivot point). For that I use Transform.RotateAround().
But I need to rotate the object until the current rotation equals Quaternion.Identity. Normally I would use Quaternion.RotateTowards() but that rotate’s around the pivot instead of the center.

Is there a way to achieve this? I don’t want to make the object a parent of another object because it are over 6000 possible objects.

If I’m not mistaken, any rotation, regardless of its center, should have an equal influence on the resulting rotation, but a potentially different outcome for the resulting position.

With this in mind, returning a rotation to Quaternion.identity should require a rotation in the same direction, regardless of where the center of that rotation is based.

Eliminating any rotation can be done by multiplying the rotation by its inverse:

identityRotation = currentRotation * Quaternion.Inverse(currentRotation);

This, however, is still a Quaternion result for a rotation. RotateAround(), however, is essentially an extension of AngleAxis().

Well, fortunately, we can represent any rotation with a single Quaternion, which means information about the Quaternion can be derived in many different ways. Incidently, the Inverse Quaternion rotation can even be skipped over by making use of Quaternion.ToAngleAxis().

The single rotation necessary to go from identity to current rotation can be translated into an AngleAxis rotation which can, in turn, be used to undo that rotation just as easily.

// C#
// First, get current rotation
float angle;
Vector3 axis;
currentRotation.ToAngleAxis(out angle, out axis);

// Next, use that rotation and go the opposite direction toward zero.
transform.RotateAround(centerPoint, axis, -angle);