# How do you calculate the height of a triangle given only by the hypotenuse and the ratio of the other two sides?

advertisements

There are two sorts of TV: Traditional ones that have an aspect ratio of 4:3 and wide screen ones that are 16:9. I am trying to write a function that given the diagonal of a 16:9 TV gives the diagonal of a 4:3 TV with the equivalent height. I know that you can use Pythagoras' theorem to work this out if I know two of the sides, but I only know the diagonal and the ratio.

I have written a function that works by guessing, but I was wondering if there is a better way.

My attempt so far:

``````    // C#
public static void Main()
{
/*
* h = height
* w = width
* d = diagonal
*/

const double maxGuess = 40.0;
const double accuracy = 0.0001;
const double target = 21.5;
double ratio4by3 = 4.0 / 3.0;
double ratio16by9 = 16.0 / 9.0;

for (double h = 1; h < maxGuess; h += accuracy)
{
double w = h * ratio16by9;
double d = Math.Sqrt(Math.Pow(h, 2.0) + Math.Pow(w, 2.0));

if (d >= target)
{
double h1 = h;
double w1 = h1 * ratio4by3;
double d1 = Math.Sqrt(Math.Pow(h1, 2.0) + Math.Pow(w1, 2.0));

Console.WriteLine(" 4:3 Width: {0:0.00} Height: {1:00} Diag: {2:0.00}", w, h, d);
Console.WriteLine("16:9 Width: {0:0.00} Height: {1:00} Diag: {2:0.00}", w1, h1, d1);

return;
}
}
}
```
```

Having diagonal and ratio is enough :-).

Let d be the diagonal, r the ratio: r=w/h.

Then d²=w²+h².

It follows r²h²+h²=d². That gives you

h²= d² /( r²+1) which you can solve :-).