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?
(In reply to
re: Method  Solution, if I've done the trig right by Charlie)
The corrected program is as follows with the correction being the negative sign in front of the cosine in the bolded line below.
DECLARE FUNCTION asind# (x#)
DEFDBL AZ
DIM SHARED dr
pi = ATN(1) * 4
dr = pi / 180
CLS
a = 30 ' angle CAB
' base AB assumed equal to 1
FOR a = 29 TO 31 ' uses A' as the origin for polar coordinates
c = 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)
BAD = ATN(tanBAD) / dr
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
ELSEIF x = 1 THEN
asind = 90
ELSE
asind = ATN(x / SQR(1  x * x)) / dr
END IF
END FUNCTION
The cosine, when its argument is greater than 90 degrees, is negative, but the segment is added at the bottom, and must be made positive. In other words the angle is the supplement of the one sought.
The results show:
29.0000000 0.7696017 0.8156536 0.0460518 20.2341025
30.0000000 0.7559289 0.7559289 0.0000000 19.1066054
31.0000000 0.7434599 0.6980666 0.0453933 17.9494689
where angle BAD is 19.1066054 and its tangent is .34641016.

Posted by Charlie
on 20050514 03:57:21 