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^2d^2 Then

Goto notsimil

EndIf

If b^2c^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