Link to download the TI-92 program.
The program is written out below.
Your computer will need the special
TI92pc font to display the special
charters.
NEWGRAPH()
()
Prgm
¨ Set modes
setMode("Angle","Degree")
setMode("Pretty Print","On")
setMode("Exact/Approx","Exact")
setMode("Split Screen","Full")
¨ End set mode
¨ Start Info Screens
ClrIO
Disp "This program will produce information"
Disp "about affine transformations of"
Disp "the form"
Disp ""
Disp "x'= ax + by + h"
Disp "y'= cx + dy + k"
Pause "ENTER to continue."
ClrIO
Disp "x'= ax + by + h"
Disp "y'= cx + dy + k"
Input "enter a",a
Input "enter b",b
Input "enter h",h
ClrIO
Disp "x'= ax + by + h"
Disp "y'= cx + dy + k"
Input "enter c",c
Input "enter d",d
Input "enter k",k
[[a,b,h][c,d,k]]»givtrans
ClrIO
¨ Testing for invertability
If a*d-b*c=0 Then
Disp givtrans
Disp "Not an affine"
Disp "transformation."
Disp "Press 2nd ESC to exit"
Goto finish
EndIf
¨ finding fixed points
givtrans-[[1,0,2*h][0,1,2*k]]»f
rref(f)»redtrans
det(subMat(redtrans,1,1,1,1))»red11
det(subMat(redtrans,1,2,1,2))»red12
det(subMat(redtrans,1,3,1,3))»red13
det(subMat(redtrans,2,1,2,1))»red21
det(subMat(redtrans,2,2,2,2))»red22
det(subMat(redtrans,2,3,2,3))»red23
[[red13,red23]]»fixedpt
If red11*red22-red21*red12=1 Then
1»numfp
Goto endfixpt
EndIf
If abs(red21)+abs(red22)+abs(red23)=0 Then
2»numfp
Else
0»numfp
EndIf
Lbl endfixpt
¨ checking similarity
If a^2d^2 Then
Goto notsimil
EndIf
If b^2c^2 Then
Goto notsimil
EndIf
det([[a,b][c,d]])»trandet
If trandet=a^2+b^2 Then
Goto simila
EndIf
If trandet=ª(a^2+b^2) Then
Goto simila
EndIf
Lbl notsimil
Disp givtrans
Disp "Not a similarity."
If numfp=1 Then
Disp "Fixed point at",fixedpt
EndIf
Disp "Run 'Tratio()'"
Disp "for more information."
Goto done
¨ Start of similarity
Lbl simila
If abs(trandet)=1 Then
Goto isometry
EndIf
Disp givtrans
Disp "is a similarity."
If numfp=1 Then
Disp "Fixed point is",fixedpt
EndIf
Disp "Scale factor is ",§(abs(trandet))
Goto done
¨ Start of isometry
Lbl isometry
Disp "<<<ISOMETRY>>>"
If trandet=1 Then
Goto direct
EndIf
If numfp=0 Then
Goto glidref
EndIf
¨ Start reflection
Disp givtrans
Disp "is a reflection."
Disp "Reflection line"
[[red11,red12,red13]]»fixline
Disp fixline
Goto done
¨ Start of glide reflection
Lbl glidref
Disp givtrans
Disp "Glide Reflection"
[[a,b][c,d]]*[[1][1]]+[[h][k]]»imgpq
(imgpq+[[1][1]])/2»midpq
[[a,b][c,d]]*[[ª1][ª1]]+[[h][k]]»imgrs
(imgrs+[[ª1][ª1]])/2»midrs
Disp "Axis of reflection"
det([[1,0]]*midpq)»p
det([[0,1]]*midpq)»q
det([[1,0]]*midrs)»r
det([[0,1]]*midrs)»s
Disp y=(s-q)/(r-p)*(x-p)+q
Disp "Glide vector"
[[a,b][c,d]]*[[p][q]]+[[h][k]]»tranpq
det([[1,0]]*tranpq)»tp
det([[0,1]]*tranpq)»tq
tp-p»vp
tq-q»vq
vp*[[1,0]]»vvp
vq*[[0,1]]»vvq
vvp+vvq»vector
Disp vector
2»numfp
Goto done
Lbl direct
If numfp=1 Then
Goto rotation
EndIf
0»numfp
¨ Start translation
Disp givtrans
Disp "Translation,"
Disp "by vector"
Disp [[h,k]]
Goto done
¨ Start rotation
Lbl rotation
¨ choosing quadrant
¨ special case a=0
If a=0 Then
sin°(c)»rotangle
EndIf
If a=0 Then
Goto printrot
EndIf
¨special case c=0
If c=0 Then
cos°(a)»rotangle
EndIf
If c=0 Then
Goto printrot
EndIf
If a>0 Then
Goto apositiv
¨ must be 1 or 4
EndIf
If b>0 Then
ª1*cos°(a)»rotangle
¨ 2 nd quad
Else
cos°(a)»rotangle
¨ 3 rd quad
EndIf
Goto printrot
Lbl apositiv
If b>0 Then
ª1*cos°(a)»rotangle
¨ 1 st quad
Else
cos°(a)»rotangle
¨ 4 th quad
EndIf
¨ End choosing quadrant
Lbl printrot
Disp givtrans
Disp "Rotation of ",rotangle
Disp "around the point",fixedpt
Lbl done
Pause "ENTER to continue"
ClrIO
Disp ""
Disp "Press 2nd ESC to end"
Disp "after viewing graph"
Disp ""
Disp "ENTER to continue"
Pause
Disp "Enter 1 for pre-image"
Disp "in first Quadrant"
Disp "Enter 2 for pre-image"
Disp "in second Quadrant"
Input "",qq
¨ clearing & Squaring Screen
ZoomStd
ª5»ymin
5»ymax
ª10»xmin
10»xmax
If qq=2 Then
Goto quad2
EndIf
¨ Graph triangles Quad 1
a+b+h»m1
a+3*b+h»m2
2*a+b+h»m3
c+d+k»m4
c+3*d+k»m5
2*c+d+k»m6
Line 1,1,1,3
Line 1,3,2,1
Line 2,1,1,1
Line m1,m4,m2,m5
Line m2,m5,m3,m6
Line m3,m6,m1,m4
Goto fixline
¨ Graph triangles Quad 2
Lbl quad2
ªa+b+h»m1
ªa+3*b+h»m2
ª2*a+b+h»m3
ªc+d+k»m4
ªc+3*d+k»m5
ª2*c+d+k»m6
Line ª1,1,ª1,3
Line ª1,3,ª2,1
Line ª2,1,ª1,1
Line m1,m4,m2,m5
Line m2,m5,m3,m6
Line m3,m6,m1,m4
¨ printing fixed line
Lbl fixline
If numfp=1 Then
PtOn red13,red23
Goto finish
EndIf
If numfp=0 Then
Goto finish
EndIf
If red12=0 Then
LineVert red13
Goto finish
EndIf
red13/red12»ycord
ª1*red11/red12»lslope
If numfp=2 Then
DrawSlp 0,ycord,lslope
EndIf
Lbl finish
EndPrgm