Look at what you're doing. You already KNOW the vector and instead of simply scaling it to the right length, you bash the problem with the trig club to calculate angles you then use to calculate a shorter version of that same vector. That is simply overcomplicating the problem with a pointless detour.
const Vector3 directionToCam = (Cam - Selected).normalize(); return Selected + (directionToCam * MaxDistance); //If you really want to be on a circle (not a sphere): //However keep in mind that if you move it to that position, you will no longer be centered on the object. Vector3 directionToCam(Cam.x - Selected.x, 0, Cam.z - Selected.z); Vector3 Calculated = Selected + (directionToCam.normalize() * MaxDistance); Calculated.y = Cam.y; return Calculated;