Chapter 10 - The Geometry of Linear and Affine Maps

Section 10.4 - Rotations, Reflections, and Rescalings in Three Dimensions

Commands before Example 10.4.1

v={α,β,δ};Q1={1,0,0};

Cntr1=(v.Q1) v

R1=Sqrt[1-(α^2)]

U1=(Q1-Cntr1)/R1

W1=Simplify[Cross[U1,v]]//.{(β^2)+(δ^2)->1−(α^2)}

Nv1=Cntr1+R1 Cos[θ] U1+R1 Sin[θ] W1

Q2={0,1,0};

Cntr2=(v.Q2) v

R2=Sqrt[1-(β^2)]

U2=(Q2-Cntr2)/R2

W2=Simplify[Cross[U2,v]]//.{(α^2)+(δ^2)->1−(β^2)}

Nv2=Cntr2+R2 Cos[θ] U2+R2 Sin[θ] W2

Q3={0,0,1};

Cntr3=(v.Q3) v

R3=Sqrt[1-(δ^2)]

U3=(Q3-Cntr3)/R3

W3=Simplify[Cross[U3,v]]//.{(α^2)+(β^2)->1−(δ^2)}

Nv3=Cntr3+R3 Cos[θ] U3+R3 Sin[θ] W3

(RotMatrix=Transpose[{Nv1,Nv2,Nv3}])//MatrixForm

(RM1=N[RotMatrix/.{α->2/Sqrt[38],β->−5/Sqrt[38],δ->3/Sqrt[38],θ->9 π/7}])//MatrixForm

Chop[RM1.Transpose[RM1]]//MatrixForm

Example 10.4.1

P={4,-7,6};w={-5,3,11};

Lengthw=Norm[w]

v=w/Lengthw

CenterPt=(v.P) v

PlotPCntr=Graphics3D[{Blue,Sphere[P,0.5],Red,Sphere[CenterPt,0.5]}];

LinePlotv=Graphics3D[{Thickness[.002],Black,Line[{-3v,7v}]}];

RotMx=(N[RotMatrix/.{α->v[[1]],β->v[[2]],δ->v[[3]]}]);

TxtPlots=Graphics3D[{Black,Text["C",{-0.8,0.5,3.5}],Text["P",{4,-7,7.5}]}];

Manipulate[RotMxExp=Evaluate[RotMx/.{θ->tval}];
NewPtPlotExp=Graphics3D[{Black,Sphere[RotMxExp.P,0.5]}];
ArrowPlotExp=Graphics3D[{Arrowheads[.04],Thickness[.007],Black,Arrow[{CenterPt,RotMxExp.P}]}];
Show[LinePlotv,PlotPCntr,NewPtPlotExp,ArrowPlotExp,TxtPlots,PlotRange->{{-10,10},{-10,10},{-10,10}},Axes->True],{{tval,0,"θ"},0,2π,π/24}]

PlotAllPtsP=Table[Graphics3D[{Black,Sphere[Evaluate[(RotMx/.{θ->tval}).P],0.25]}],{tval,0,2π,π/24}];

PlotFirstArrow=Graphics3D[{Arrowheads[.04],Thickness[.004],Black,Arrow[{CenterPt,Evaluate[(RotMx/.{θ->0}).P]}]}];

Show[PlotAllPtsP,LinePlotv,PlotPCntr,TxtPlots,PlotFirstArrow,PlotRange->{{-12,12},{-12,12},{-12,12}},Axes->True]