# Moving an object on z-axis, considering it´s rotation (without transform.forward)

Hi,
first of all I know that transform.forward is literally the solution for my question, but:
I´m going to write a test on linear algebra and want to get an in-depth understanding who to calculate it on my own.
So I want to move an object constantly on it´s local z-axis forward and rotate it, to steer its direction of movement. Who would I calculate the z-axis movement?

Given an objects rotation, you can calculate the forward vector like so:
**

``````Vx = 2 * (x*z + w*y)
Vy = 2 * (y*z - w*x)
Vz = 1 - 2 * (x*x + y*y)
``````

**

With Vx, Vy, and Vz being the components of the forward direction along each of the cardinal axis and w, x, y, z being the Quaternion’s internal values - so in code

``````Quaternion r = transform.rotation;

float xComp = 2*(r.x*r.z + r.w*r.y);
float yComp = 2*(r.y*r.z + r.w*r.x);
float zComp = 2*(r.x*r.x + r.y*r.y);

Vector3 forward = new Vector3(xComp,yComp,zComp);
``````

However this is maybe not what you are looking for. If you want to instead use the euler angles, you could take the x and y rotations and apply it to a forward vector:
**

1. Take global z axis vector and the global y axis vector
2. Rotate both about the global x axis by rotation.eulerAngles.x
3. Rotate the new z vector about the new y vector by rotation.eulerAngles.y
4. Resulting z vector is your forward vector