Rotating around a rotated circle

Hello !

I am trying to find a way to rotate a CFrame around an invisible circle that can also be rotated. The most common example is when using the rotate tool, imagine my circle was one of the rings and I would want to rotate around them

I got this function but it only works in specific circonstances and is very buggy

function GetRayData(Origin, Radius, Rotation, Alpha)
	local NewRotation = math.pi * Alpha
	local RayData = Origin * CFrame.Angles(NewRotation * Rotation.LookVector.X * Rotation.LookVector.Y 0) *, 0, Radius)
	return RayData.Position, RayData.LookVector * Radius

Could somebody help fix it as I spent far too much time on it.