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) * CFrame.new(0, 0, Radius)
	
	return RayData.Position, RayData.LookVector * Radius
end

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

Thanks!