Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Well, I know, it's easy. We did it in class some time ago and I forgot it, I'm stupid because I can't figure it out:

E.g. I have a 32" TV with 16:9 ratio and I want to know its width and height.

I'd like to know the whole derivation so I can understand it (again) ...

Enlightenment, please! Thanks.

share|cite|improve this question
You use the Pythagorean theorem like so: your diagonal's 32 inches and you know the aspect ratio of your legs; that nets you $(16x)^2+(9x)^2=(32)^2$... – J. M. Sep 11 '11 at 20:59
(After reading the Answer) Just saw your comment, thank you too! It's clear now. – Erik Sep 11 '11 at 21:20
up vote 6 down vote accepted

Suppose that the unknown width and height are $x$ and $y$, and you’re given a diagonal $d$ and a ratio $m:n$ of width to height. That ratio means that the width is $\frac{m}{n}$ times the height, so you know that $x=\frac{m}{n}y$. You get a second relationship between $x$ and $y$ from the Pythagorean theorem: $x$, $y$, and $d$ are the lengths of the two legs and the hypotenuse of a right triangle, so $x^2+y^2=d^2$.

Now substitute $\frac{m}{n}y$ for $x$ in this second equation to get $\displaystyle\left(\frac{m}{n}y\right)^2 + y^2 = d^2$. Simplifying this, you get in turn: $$\frac{m^2}{n^2}y^2 + y^2 = d^2,$$ $$\left(\frac{m^2}{n^2}+1\right)y^2 = d^2,$$ $$\left(\frac{m^2+n^2}{n^2}\right)y^2=d^2,$$ and $$(m^2+n^2)y^2=d^2n^2.$$ Finally, solve for $y$: $\displaystyle y^2 = \frac{d^2n^2}{m^2+n^2}$, so $y=\displaystyle\frac{dn}{\sqrt{m^2+n^2}}$.
Once you have a numerical value for $y$, you can plug it into $x=\frac{m}{n}y$ to get a value for $x$.
(Or you can do that symbolically: $\displaystyle x=\frac{m}{n}\cdot \frac{dn}{\sqrt{m^2+n^2}} =$ $\displaystyle\frac{dm}{\sqrt{m^2+n^2}}$.)

share|cite|improve this answer
Very nice! Thank you very much! I think I just was on the wrong path ... Looks so easy now. – Erik Sep 11 '11 at 21:16

$$w^2+h^2=32^2,\\\frac wh=\frac{16}{9}.$$

Then dividing by $h^2$,



share|cite|improve this answer

Here is a code snippet from my gesture library. It is fully tested and calculates the width and height based upon and diagonal length and a width to height ration.

public void triggerFling(float dynamicFlingDistance, float width, float height) {

    float animationStartX = (int) matrixVals[Matrix.MTRANS_X];
    float animationStartY = (int) matrixVals[Matrix.MTRANS_X];
    float animationEndX = 0;
    float animationEndY = 0;

    if(dynamicFlingDistance == 0) {

        animationEndX = width;
        animationEndY = height;

    else {

        if(width == 0 || height == 0) {

            if(width == 0 && height !=0) {

                animationEndX = (int) matrixVals[Matrix.MTRANS_X];
                animationEndY = height;

            else if(width != 0 && height ==0) {

                animationEndX = width;
                animationEndY = (int) matrixVals[Matrix.MTRANS_X];

            else if(width == 0 && height == 0) {return;}//End if(width == 0 && height !=0)

        else {

            if(height > 0) {

                animationEndY = (float) Math.sqrt((dynamicFlingDistance * dynamicFlingDistance) / (Math.pow((width / height), 2) + Math.pow((height / height), 2)));
                animationEndX = (animationEndY / (height / width));

            else {

                animationEndY = (float) -Math.sqrt((dynamicFlingDistance * dynamicFlingDistance) / (Math.pow((width / height), 2) + Math.pow((height / height), 2)));
                animationEndX = (animationEndY / (height / width));


        }//End if(width ==0 || height == 0)

    }//End if(dynamicFlingDistance == 0)

    translateAnimation = new TranslateAnimation(animationStartX, animationEndX, animationStartY, animationEndY);

    if(bounceBack == false) {

        final float animationEndXFinal = animationEndX;
        final float animationEndYFinal = animationEndY;

        new Handler().postDelayed(
                new Runnable() {
                    public void run() {

                        matrixVals[Matrix.MTRANS_X] = animationEndXFinal;
                        matrixVals[Matrix.MTRANS_Y] = animationEndYFinal;


                }, flingAnimationTime);

    }//End if(bounceBack == false)

share|cite|improve this answer

protected by MJD Aug 3 '15 at 0:38

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.