c c ---------------- c subroutine axisang2rot(axis,ang,rot) c c AXIS is the normalized axis vector c ANG is the rotation angle in radians c ROT is the 3x3 matrix real cc,ss,rnorm,rsum,axis(3),axis2(3),ang,rot(3,3) c rsum=0. do 100, i=1,3 axis2(i)=axis(i)**2 rsum=rsum+axis2(i) 100 continue rnorm=sqrt(rsum) do 200, i=1,3 axis(i)=axis(i)/rnorm axis2(i)=axis(i)**2 200 continue c normalize anyway! cc=cos(ang) ss=sin(ang) rot(1,1)=axis2(1)+cc*(1-axis2(1)) rot(2,2)=axis2(2)+cc*(1-axis2(2)) rot(3,3)=axis2(3)+cc*(1-axis2(3)) rot(1,2)=(1.-cc)*axis(1)*axis(2)+ss*axis(3) rot(2,1)=(1.-cc)*axis(1)*axis(2)-ss*axis(3) rot(2,3)=(1.-cc)*axis(2)*axis(3)+ss*axis(1) rot(3,2)=(1.-cc)*axis(2)*axis(3)-ss*axis(1) rot(3,1)=(1.-cc)*axis(1)*axis(3)+ss*axis(2) rot(1,3)=(1.-cc)*axis(1)*axis(3)-ss*axis(2) c return end c c -------------------- c