代码之家  ›  专栏  ›  技术社区  ›  Martin Brown

只有斜边和其他两边的比例,你如何计算三角形的高度?[关闭]

  •  3
  • Martin Brown  · 技术社区  · 15 年前

    有两种电视:传统电视的纵横比为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 回复  |  直到 15 年前
        1
  •  10
  •   Jonathan Fingland    15 年前

    有对角线和比率就足够了。

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

    然后d_2=w_2+h_2。

    它遵循R_2 H_2+H_2=D_2。这给了你

    h_2=d_2/(r_2+1),可以求解:—)。

        2
  •  3
  •   Community CDub    8 年前

    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

    它也适用于其他比率

        3
  •  2
  •   Patrick McDonald    15 年前

    解出其他答案中已经计算出的方程,就固定高度而言,对角线的比例很简单:

    diagonal(4:3) = diagonal(16:9) * 15 / sqrt(337)
    
        4
  •  1
  •   Johan    15 年前

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

    如果你知道比例,你就知道角度。

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

    现在你知道了其他纵横比电视的高度,宽度。你可以继续使用trig,或者使用毕达哥拉斯来计算新的对角线。

        5
  •  1
  •   Naveen    15 年前

    如果n=高度/宽度,则: 宽度=对角线/(sqrt(1+n^2))

        6
  •  0
  •   pauljwilliams    15 年前

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

    因此,除以(r^2+1)项,可以得到两台相同高度的电视机之间的对角线比率。

        7
  •  0
  •   Makis    15 年前

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

    H^ 2=X^ 2+y ^ 2

    X/Y=4/3=>X=4/3*Y

    因此

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

    既然你知道h,你可以解y,也可以解x。