- Home /
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.
Thanks for your time.
Answer by robertbu · May 15, 2014 at 08:40 PM
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.
Yes! Tried your alternate suggestion and it's working perfectly. Thank you.
Your answer
Follow this Question
Related Questions
rotate to specific coordinate c# 1 Answer
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Convert Touch input to Mouse input C#? 1 Answer
Random angle 1 Answer