(* 
Korzystamy z wzoru Rodriguesa na macierz obrotu, w ktorym podaje sie wektor jednostkowy {w1,w2,w3} (reprezentujacy os obrotu) oraz kat, o ktory obracamy phi, by udowodnic rownowaznosc dwoch roznych postaci macierzy obrotu.

http://mathworld.wolfram.com/RodriguesRotationFormula.html
*)

omegam[w1_,w2_,w3_]:={{0,-w3,w2},{w3,0,-w1},{-w2,w1,0}}

MatrixForm[omegam[w1,w2,w3]]

R[w1_,w2_,w3_,phi_]:=IdentityMatrix[3]+Sin[phi]*omegam[w1,w2,w3]+(1-Cos[phi])*omegam[w1,w2,w3].omegam[w1,w2,w3]

(* obrot wokol osi x o kat phi *)

MatrixForm[R[1,0,0,phi]]

(* obrot wokol osi y o kat phi *)

MatrixForm[R[0,1,0,phi]]

(* obrot wokol osi z o kat phi *)

MatrixForm[R[0,0,1,phi]]

(* 
Pierwszy sposob: trzy obroty wokol ruchomych osi. 
wykonujemy najpierw obrot wokol osi z o kat alfa w wyjsciowym ukladzie wspolrzednych S. Wskutek tego obrotu dostajemy nowe osie ukladu S', ktorych wersory w wyjsciowym ukladzie S maja postac 
{\hat x'}={Cos[alfa],Sin[alfa],0}, 
{\hat y'}={-Sin[alfa],Cos[alfa],0},{\hat z'}={0,0,1}.

Nastepnie wykonujemy obrot wokol osi {\hat y'} o kat beta. W wyniku tego obrotu bedziemy miec nowe osie w ukladzie S''. W szczegolnosci wersor osi z'' ma postac {\hat z''}={Cos[alfa]*Sin[beta],Sin[alfa]*Sin[beta],Cos[beta]}. 

Ostatnim obrotem, jest obrot wokol osi {\hat z''} o kat gamma.     
*)

R1=R[0,0,1,alfa]

MatrixForm[R1]

R2=Simplify[R[-Sin[alfa],Cos[alfa],0,beta]]

MatrixForm[Simplify[R2]]

Simplify[R2.(R1.{1,0,0})]

Simplify[R2.(R1.{0,1,0})]

Simplify[R2.(R1.{0,0,1})]

R3=Simplify[R[Cos[alfa]*Sin[beta],Sin[alfa]*Sin[beta],Cos[beta],gamma]]

RM1=Simplify[R3.R2.R1]

MatrixForm[RM1]

RR1[alfa_,beta_,gamma_]:={{Cos[alfa] Cos[beta] Cos[gamma]-Sin[alfa] Sin[gamma],-Cos[gamma] Sin[alfa]-Cos[alfa] Cos[beta] Sin[gamma],Cos[alfa] Sin[beta]},{Cos[beta] Cos[gamma] Sin[alfa]+Cos[alfa] Sin[gamma],Cos[alfa] Cos[gamma]-Cos[beta] Sin[alfa] Sin[gamma],Sin[alfa] Sin[beta]},{-Cos[gamma] Sin[beta],Sin[beta] Sin[gamma],Cos[beta]}}

(* Drugi sposob: trzy obroty wokol ustalonych osi. 
wykonujemy najpierw obrot wokol osi z o kat gamma w wyjsciowym ukladzie wspolrzednych S. 

Nastepnie wykonujemy obrot wokol osi {\hat y} o kat beta. 

Ostatnim obrotem, jest obrot wokol osi {\hat z} o kat alfa.     
*)

RM2=Simplify[R[0,0,1,alfa].R[0,1,0,beta].R[0,0,1,gamma]]

MatrixForm[RM2]

RR2[alfa_,beta_,gamma_]:={{Cos[alfa] Cos[beta] Cos[gamma]-Sin[alfa] Sin[gamma],-Cos[gamma] Sin[alfa]-Cos[alfa] Cos[beta] Sin[gamma],Cos[alfa] Sin[beta]},{Cos[beta] Cos[gamma] Sin[alfa]+Cos[alfa] Sin[gamma],Cos[alfa] Cos[gamma]-Cos[beta] Sin[alfa] Sin[gamma],Sin[alfa] Sin[beta]},{-Cos[gamma] Sin[beta],Sin[beta] Sin[gamma],Cos[beta]}}

Simplify[RM1-RM2]