如果只给出斜边和其他两边的比例,你如何计算三角形的高度?

时间:2009-06-25 10:40:11

标签: math

有两种类型的电视:传统的宽高比为4:3,宽屏的电视为16:9。我正在尝试编写一个函数,给出16:9电视的对角线给出4:3电视的对角线,其高度相等。我知道你可以使用毕达哥拉斯定理来解决这个问题,如果我知道其中两个方面,但我只知道对角线和比率。

我写了一个通过猜测工作的函数,但我想知道是否有更好的方法。

到目前为止我的尝试:

    // 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;
            }
        }
    }

7 个答案:

答案 0 :(得分:10)

有对角线和比例就足够了: - )。

设d为对角线,r为比率:r = w / h。

然后d²=w²+h²。

它遵循r²h²+h²=d²。这给了你

h²=d²/(r²+ 1),你可以解决: - )。

答案 1 :(得分:3)

d' = d \sqrt{\frac{(\frac{a'}{b'})^2 + 1}{(\frac{a}{b})^2 + 1}}

其中d'是新的(4/3)对角线,d是16/9对角线,a / b = 16/9,a'/ b'= 4/3

它适用于其他比率

答案 2 :(得分:2)

求解已在其他答案中计算出的方程式,可以得出固定高度的对角线比例简单:

diagonal(4:3) = diagonal(16:9) * 15 / sqrt(337)

答案 3 :(得分:1)

如果需要,可以使用trig。毕竟,对角线是其中一面。

如果您知道比率,就会知道角度。

如果您知道角度和斜边,则可以计算高度。

现在您知道其他宽高比电视的高度 - 以及宽度 - 。您可以使用trig,或使用毕达哥拉斯来计算新的对角线。

答案 4 :(得分:1)

如果n =身高/宽度,则: width = diagonal /(sqrt(1 + n ^ 2))

答案 5 :(得分:0)

简单代数给出d ^ 2 =(R ^ 2 + 1)h ^ 2

因此除以(R ^ 2 + 1)项将给出两个相同高度的电视之间的对角线比率。

答案 6 :(得分:0)

我不是数学家,但它是这样的:

h ^ 2 = x ^ 2 + y ^ 2

x / y = 4/3 =&gt; x = 4/3 * y

因此

h ^ 2 =(4 / 3y)^ 2 + y ^ 2

因为你知道你可以解决y,因此也是x。