Closed reflective paths in a triangle.

We will investigate here some of the questions raised in the previous worksheet..

Investigation: In order to draw some pictures, we need a word that reflects a point pt about the line through two other points a and b. This word is defined in the most natural way: First write an equation for the line through a and b, and an equation for the line through pt which is perpendicular to the line through a and b. These equations are called lin and linperp in the definition below. Then solve the system of equations [Maple Math] simultaneously for x and y, and substitute that into the expression for the reflected point, [Maple Math] .

[Maple OLE 2.0 Object]

rpaths1

> reflect := proc(pt,a,b)
local linperp,cen,x,y,lin;
lin := (b[2]-a[2])*(x-a[1])-
(b[1]-a[1])*(y - a[2]);
linperp := (b[1]-a[1])*(x-pt[1])+
(b[2]-a[2])*(y - pt[2]);
cen := solve({linperp,lin},{y,x});
subs(cen,pt+2*([x,y]-pt))
end:

> reflect([0,0],[1,0],[0,1]);

[Maple Math]

Now, let's draw a closed path in a triangle. Take a sample triangle.

> a := [0,0]: b :=[3,4]: c:=[-2,7]:

> pla := plots[textplot]([[op(a),`A` ],[op(b),`B`],
[op(c),`C`]],align={ABOVE,RIGHT},font=[TIMES,BOLD,18]):;

> with(plots):

tr1 is a tan copy of the triangle abc

> tr1:=plots[polygonplot]([a,b,c],style=patch,color=tan,scaling=constrained) :

> tr1;

[Maple Plot]

drawtr is a word which makes it easy to draw colored triangles. We will use it to draw the reflection of abc about bc and the reflection of that about the segment c ra.

> drawtr := (a,b,c,cl) ->
plots[polygonplot]([a,b,c],style=patch,color=cl,scaling=constrained):

> ra := reflect(a,c,b);

[Maple Math]

> tr2 :=drawtr(ra,b,c,grey):

> rb := reflect(b,c,ra);

[Maple Math]

> plra := plots[textplot]([[op(ra),`rA` ],[op(rb),`rB`] ],align={ABOVE,RIGHT} );

[Maple Math]
[Maple Math]

>

> tr3 := drawtr(rb,ra,c,yellow):

Now look at all three triangles together.

> plots[display]([pla,plra,tr1,tr2,tr3]);

[Maple Plot]

Take a point p on ab and its image q on ra rb. These can be obtained by specifying a number r between 0 and 1 and forming convex combinations. We will take r to be 1/3 for starters.

> r := 1/3;

[Maple Math]

> p := r*a+(1-r)*b; q := r*ra+(1-r)*rb;

[Maple Math]

[Maple Math]

> plqp := plots[textplot]([[op(q),`Q` ],[op(p),`P`]
],align={below,RIGHT},font=[TIMES,BOLD,18]);

[Maple Math]
[Maple Math]

If we look at the intersection p1 of the segment pq with the segment bc, p1 must be of the form t*p + (1-t)*q for some t in [0,1] and also of the form s*b + (1-s) for some s in [0,1]. Thus the difference must be zero.

> z1 := evalm(t*p+(1-t)*q-( s*b+(1-s)*c));

[Maple Math]

> sol1 :=solve({z1[1]=0,z1[2]=0},{s,t});

[Maple Math]

So p1 is determined.

> p1 := subs(sol1,t*p+(1-t)*q);

[Maple Math]

In the same way, the intersection p2 of the segments pq and c ra can be determined.

> z2 := evalm(t*p+(1-t)*q-(s*c+(1-s)*ra));

[Maple Math]

> sol2 :=solve({z2[1],z2[2]},{s,t});

[Maple Math]

> p2 := subs(sol2,expand(t*p+(1-t)*q));

[Maple Math]

Now reflect p2 about bc to rp2. So the triangular path p p1 rp2 lying in triangle abc represents the path of a ball starting at p on ab, 'bouncing off' side bc at p1, then bouncing off side ac at rp2, and returning to side ab at the point where it started, p.

> rp2 := reflect(p2,b,c);

[Maple Math]

> path :=polygonplot({[p,q],[p,p1,rp2]},
style=patch,thickness=3,color=red):

> plots[display]([tr1,tr2,tr3,path,pla,plra,plqp],axes=none);

[Maple Plot]

>

Whoa! We can see clearly that the triangular path in the tan (original triangle abc) is not a reflective path because the angles formed at the beginning and ending point are not the same. We can back up and make use of a standard method to decide when there is a reflective path.

Make a sketch of the problem and give names to the variable angles and segments in the sketch. Then use basic geometric theorems such as the sum of the angles in a triangle add up to Pi, vertical angles are equal, etc to write down equations about these angles and segments. Then solve the equations. Use solve in Maple. This enables you work on larger problems than you would do by hand. The picture for our triangle problem is something like this.

[Maple OLE 2.0 Object]

rpaths2

> a := 'a': b := 'b': c := 'c':

> eq1 := A+B+C=Pi;

[Maple Math]

> eq2 := C+b+a=Pi;

[Maple Math]

> eq3 := A+b+c=Pi;

>

[Maple Math]

> eq4 := (Pi-2*b)+ (Pi-2*c)+ (Pi-2*a)=Pi;

[Maple Math]

> eq5 := a + c + B = Pi;

[Maple Math]

>

> sol :=solve({eq1,eq5,eq4,eq2,eq3 },{A,B,C,a,b,c});

[Maple Math]

> subs(sol,a+b+c);

[Maple Math]

Note it follows from the solution here that the angles A,B, and C must all be acute angles in order that there be a closed reflective triangular path. It also says that the three triangles cut off by the path are similar to the original triangle. The path is unique in this case, as we can see below.

>

> drawtr := (a,b,c,cl) ->
polygonplot([a,b,c],style=patch,color=cl,scaling=constrained);

[Maple Math]

> drawit := proc(a,b,c,r )
local tr1, ra, tr2, rb, tr3, p, q, eq1, sol1, p1, eq2, sol2, p2,
rp2, rq1, rq, plra, plqp,path;
tr1 := drawtr(a,b,c,turquoise);
ra := reflect(a,c,b);
tr2 :=drawtr(ra,b,c,gray);
rb := reflect(b,c,ra);
tr3 := drawtr(rb,ra,c,yellow):
p := r*a+(1-r)*b; q := r*ra+(1-r)*rb;
eq1 := evalm(t*p+(1-t)*q-( s*b+(1-s)*c));
sol1 :=solve({eq1[1],eq1[2]},{s,t});
p1 := subs(sol1,t*p+(1-t)*q);
eq2 := evalm(t*p+(1-t)*q-(s*c+(1-s)*ra));
sol2 :=solve({eq2[1],eq2[2]},{s,t});
p2 := subs(sol2,t*p+(1-t)*q);
rp2 := reflect(p2,b,c);
rq1 := reflect(q,c,ra);
rq := reflect(rq1,b,c);
plra := plots[textplot]([[op(ra),`rA` ],[op(rb),`rB`]],align={ABOVE,RIGHT},
font=[TIMES,BOLD,18]);
plqp := plots[textplot]([[op(q),`Q` ],[op(p),`P`]
],align={below,RIGHT},font=[TIMES,BOLD,18]);
path :=polygonplot({[p,q],[p,p1,rp2]},style=patch, thickness =3,
color=magenta):
plots[display]([tr1,tr2,tr3,path,plra,plqp]);
end:

> drawit( [0,0],[2,1],[0,5],1/2);

[Maple Plot]

We can animate this to show better what we mean.

> plots[display]([seq(drawit([0,0],[2,1],[0,5],i/14),i=1..13)],insequence=true);

[Maple Plot]

>

This word draws the unique reflective triangular path if you input a triangle a,b,c with all angles acute.

> drawit := proc(a,b,c )
local tr1, ra, tr2, rb,r, tr3, p, q, eq1, sol1, p1, eq2, sol2, p2, rp2, rq1, rq, path,eq;
tr1 := drawtr(a,b,c,turquoise);

> ra := reflect(a,c,b);

> tr2 :=drawtr(ra,b,c,grey);

> rb := reflect(b,c,ra);

> tr3 := drawtr(rb,ra,c,yellow):

> p := r*a+(1-r)*b ; q := r*ra+(1-r)*rb ;

> eq := linalg[dotprod](q-p,b-a) = linalg[dotprod](p-q,ra-rb) ;

> r:= solve(eq, r );
p := r*a+(1-r)*b ; q := r*ra+(1-r)*rb ;

> eq1 := evalm(t*p+(1-t)*q-( s*b+(1-s)*c));

> sol1 :=solve({eq1[1],eq1[2]},{s,t});

> p1 := subs(sol1,convert(evalm(t*p+(1-t)*q) ,list));

> eq2 := evalm(t*p+(1-t)*q-(s*c+(1-s)*ra));

> sol2 :=solve({eq2[1],eq2[2]},{s,t});

> p2 := subs(sol2,convert(evalm(t*p+(1-t)*q),list));

> rp2 := reflect(p2,b,c);

> rq1 := reflect(q,c,ra);

> rq := reflect(rq1,b,c);

> path :=polygonplot({[p,q],[p,p1,rp2]},
style=patch, thickness=3,color=red):

> plots[display]([tr1,tr2,tr3,path ]); end:

> drawit([0,0],[2,1],[0,3]);

[Maple Plot]

>

Problems

We used an algebraic argment to show that there is only one closed reflective path in an acute angled triangle. Show that the following theorem can be used to give a synthetic argument for this (and then prove the theorem). Theorem: Suppose that triangles ABC and A'B'C' are inscribed in triangle T so that AB is parallel to A'B', BC is parallel to B'C' and CA is parallel to C'A'. Then the triangles are equal.

Definition. A linear reflective path is one which is piecewise linear (with two endpoints). So at the endpoints it bounces off at a right angle.

Show that if a triangle has a linear reflective path consisting of two line segments end to end then it is an isosceles triangle.

Find a triangle which has a linear reflective path with four line segments.

The bowtie problem. Does a triangle have closed reflective bowtie path?

Hints on a solution

> rhs(eq1);

[Maple Math]

> eq1 := A+B+C=Pi;

[Maple Math]

> eq2 := a+B+c =Pi;

[Maple Math]

> eq3 := d + b+C =Pi;

[Maple Math]

> eq4 := 2*Pi-(A+b+c)=Pi-(a+d);

[Maple Math]

> eq5 := Pi-2*c+ (Pi-2*a) +a+d = Pi;

[Maple Math]

> eq6 := a+d + (Pi-2*d) + (Pi-2*b)=Pi;

[Maple Math]

> sol := solve({c<Pi/2,b<Pi/2,eq1,eq2,eq3,eq4,eq5,eq6},
{A,B,C,a,b,c,d});

[Maple Math]

Does there exist a closed reflective path in a triangle with six bounces?

Hints on a solution.

> restart;

> eq0 := A+B+C=Pi;

[Maple Math]

> eq1 := A+a+b=Pi;

[Maple Math]

> eq2 := 0=0;

[Maple Math]

> eq3 := C +c +d = Pi;

[Maple Math]

> eq4 := B + f +e = Pi;

[Maple Math]

> eq5 := Pi-2*f + a+f + Pi-2*e = Pi;

[Maple Math]

> eq6 := 0=0;

[Maple Math]

> eq7 := Pi-2*a + Pi-2*b + b +c + a +f = 2*Pi;

[Maple Math]

> eq8 := Pi - (a+f) + Pi - (b+c) + (e+d) = 2*Pi;

[Maple Math]

> eq9 := Pi-2*d + b+c + Pi-2*c = Pi;

[Maple Math]

> sol :=solve({f<Pi/2,e<Pi/2,b<Pi/2,c<Pi/2,d<Pi/2,eq0,eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,eq9},{A,B,C,a,b,c,d,e,f});

[Maple Math]

>

Table of Contents