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

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?

Thanks in advance!

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