 All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars  perplexus dot info  Triangular Billiard Table (Posted on 2005-05-12) We have a billiard table in the shape of a right triangle ABC with B the right angle. A cue ball is struck at vertex A and bounces off sides BC, AC, AB, and AC at points D, E, F, and G respectively ending up at vertex B. Assume the angle of incidence equals the angle of reflection at each bounce. If the path segments AD, EF, and GB are concurrent, then what is the tangent of angle BAD?

 See The Solution Submitted by Bractals Rating: 2.5000 (2 votes) Comments: ( Back to comment list | You must be logged in to post comments.) re: Method -- Solution, if I've done the trig right | Comment 6 of 9 | (In reply to Method by Charlie)

Based on the diagram I described, with reflected triangles, I wrote the following program, initially varying a (angle CAB) between 10 and 44, but narrowing it down, to get the two crossing points (EF and GB) with AD as close to zero as possible:

DECLARE FUNCTION asind# (x#)
DEFDBL A-Z
DIM SHARED dr
pi = ATN(1) * 4
dr = pi / 180

CLS
a = 30 ' angle CAB
' base AB assumed equal to 1
FOR a = 41.8535301# TO 41.8535412# STEP .000001#' uses A' as the origin for polar coordinates
b = 90 - a
ar = 2: atheta = 0
br = 1: btheta = 0
cr = 1 / COS(a * dr)
ctheta = a
bpr = 1: bptheta = 2 * a
cpr = cr: cptheta = 3 * a
bppr = bpr: bpptheta = 4 * a
tanBAD = SIN(bpptheta * dr) * bppr / (COS(bpptheta * dr) * bppr + 2)
ABpp = SQR(4 + bppr - 4 * bppr * COS(4 * a * dr))
sinGBA = SIN(4 * a * dr) * 2 / ABpp
GBA = asind(sinGBA)
AXB = 180 - GBA - BAD
AX = sinGBA / SIN(AXB * dr)
EAX = a - BAD
EA = 2 * SIN(BAD * dr) / SIN((180 - a - BAD) * dr)
XEA = BAD + a
AX2 = SIN(XEA * dr) * EA / SIN((180 - XEA - EAX) * dr)
PRINT USING "###.#######"; a; AX; AX2; AX - AX2; BAD
NEXT a

FUNCTION asind (x)
IF x = 1 THEN
asind = 90
ELSE
asind = ATN(x / SQR(1 - x * x)) / dr
END IF
END FUNCTION

Variables that  are three capital letters are angles; two capital letters are lengths between the points.

The results are:

`angle CAB    A to GB     A to EF    diff     angle BAD41.8535301  0.4187826  0.4187827 -0.0000001 12.012768641.8535311  0.4187826  0.4187826  0.0000000 12.012765241.8535321  0.4187826  0.4187825  0.0000001 12.012761741.8535331  0.4187826  0.4187824  0.0000002 12.012758241.8535341  0.4187826  0.4187822  0.0000003 12.012754741.8535351  0.4187826  0.4187821  0.0000004 12.012751341.8535361  0.4187826  0.4187820  0.0000005 12.012747841.8535371  0.4187825  0.4187819  0.0000007 12.012744341.8535381  0.4187825  0.4187818  0.0000008 12.012740841.8535391  0.4187825  0.4187816  0.0000009 12.012737441.8535401  0.4187825  0.4187815  0.0000010 12.012733941.8535411  0.4187825  0.4187814  0.0000011 12.0127304`

Angle measures are in degrees and it looks like angle BAD = 12.0127652, when angle CAB is 41.8535311 to produce the concurrence condition. That gives angle BAD a tangent function of .2127894334.

There are various places where I could have made a mistake in applying the law of sines or the law of cosines, so probably someone should draw the diagram as I had described and check my trig.  The programming is pretty much straightforward assignments of values into mathematicallly named variables, based on other previously found variables. The dr variable is there just to convert degrees to radians as that's what the builtin functions use.  My own asind incorporates it within the function itself.

 Posted by Charlie on 2005-05-12 20:51:37 Please log in:

 Search: Search body:
Forums (0)