Direct3Dで、カメラの回転をさせるとき、フライトシミュレータのように
自由に宙返りのような回転を加えたいと思ってます。
そのとき、カメラの上方向ベクトルを変化させないと、ちゃんと宙返り
したようにならないので、以下のように設定しました。

回転は x軸回転です。

角度0度以上  上方向ベクトル( 0, 1, -1 )
90度以上 ( 0, -1, -1 )
180度以上 ( 0, -1, 1 )
270度以上 ( 0, 1, 1 )

このように角度に応じて、上方向ベクトルを変化させると
うまく回転できるようになりましたが、これを求める計算式って
ないんでしょうか?
cos、sinで+と-は求まりますが、少数になってしまうのでちょっとわからないです。
それとも何か関数が用意されてたりするんでしょうか?

わかる方教えてください。