# Converting Y-rotation into X & Z coordinates?

I’m converting X & Z into an angle through

``````angle = Mathf.Atan2 (X-axis, Z-axis) * Mathf.Rad2Deg;
``````

I’m looking for a way to convert the angle back into X & Z coordinates. I’ve googled about and ended up with

``````Vector3 coords = Quaternion.Euler(0, angle, 0) * (new Vector3(1,0,1));

X-axis = coords.x;
Z-axis = coords.z;
``````

But this doesn’t seem to be giving me the values that I’m after.

I’m trying to do this so that I can convert the coordinates to degrees, add the camera’s y-rotation to that, then convert it back into coordinates. I’m working in C#.

Any help is greatly appreciated.

There are a number of unknowns here, but to start with you are not using the magnitude of the original vector. You can get the magnitude by:

``````float mag = new Vector3(x-axis, 0.0, z-axis).magnitude;
``````

or:

``````float mag = Mathf.Sqrt(x-axis*x-axis+z-axis*z-axis);
``````

Then your rotation code would be:

``````Vector3 coords = Quaternion.Euler(0, angle, 0) * Vector3.right * mag;
``````

But I let me suggest an alternate approach.

``````Vector3 v = new Vector3(xAxis, 0.0f, zAxis);
v = Quaternion.AngleAxis(Camera.main.transform.eulerAngles.y, Vector3.up) * v;
``````

‘v’ will how have the coordinates I believe you are looking for. I may have your desired rotation backwards, so either negate the angle or use Vector3.down in the AngleAxis() call.