There are two palm trees at opposite banks of a river, one in front of another one, whose heights are 30 and 20 cubits respectively. The distance between their trunks is 50 cubits. There are also two birds, each of them is sited on the top of each palm tree. Suddenly these two birds see a fish in the river between the two palm trees. If the birds throw themselves and attain to the fish at the same time, what are the distances from the place in which the fish is sited to the bases of the palm trees? You can solve this problem in an algebraic way, but there exists a subtle, geometric and beautiful solution for this problem.
What follows is an applet I created to generalize Miguel's Problem. Can you explain why it works?

What happens when you move the points A, B, and C? Can you explain why this works?