I'm writing a flight simulator program (similar to Star fox 64) in XNA and I'm having an issue with my rotations. My idea is to have a vector for the velocity and vector for the position. The controls I'm allowing make it such that Euler's angles would cause issues so I'm wanting to use Quaternions. 

I'm not super familiar with the graphics rendering yet, but I thought I could use Quaternion.createFromAxisAngle(vector, roll) (roll being the rotation around my velocity vector) but it's not working correctly. Basically whenever I try to rotate pitch or yaw, nothing happens. When I roll, it works but not as I would have expected. Is this the proper use of the createFromAxisAngle method? Thanks. 

Here is the update position code for my ship:

```
    public override void UpdatePositions()
    {
        float sinRoll = (float)Math.Sin(roll);
        float cosRoll = (float)Math.Cos(roll);
        float sinPitch = (float)Math.Sin(pitch);
        float cosPitch = (float)Math.Cos(pitch);
        float sinYaw = (float)Math.Sin(yaw);
        float cosYaw = (float)Math.Cos(yaw);

        m_Velocity.X = (sinRoll * sinPitch - sinRoll * sinYaw * cosPitch - sinYaw * cosPitch);
        m_Velocity.Y = sinPitch * cosRoll;
        m_Velocity.Z = (sinRoll * sinPitch + sinRoll * cosYaw * cosPitch + cosYaw * cosPitch);
        if (m_Velocity.X == 0 && m_Velocity.Y == 0 && m_Velocity.Z == 0)
            m_Velocity = new Vector3(0f,0f,1f);
        m_Rotation = new Vector3((float)pitch, (float)yaw, (float)roll);

        m_Velocity.Normalize();
        //m_QRotation = Quaternion.CreateFromYawPitchRoll((float)yaw,(float)pitch,(float)roll); This line works for the most part but doesn't allow you to pitch up correctly while banking.
        m_QRotation = Quaternion.CreateFromAxisAngle(m_Velocity,(float)roll);
        m_Velocity = Vector3.Multiply(m_Velocity, shipSpeed);

        m_Position += m_Velocity;
    }

```