有两种类型的电视:传统的宽高比为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;
}
}
}
答案 0 :(得分:10)
有对角线和比例就足够了: - )。
设d为对角线,r为比率:r = w / h。
然后d²=w²+h²。
它遵循r²h²+h²=d²。这给了你
h²=d²/(r²+ 1),你可以解决: - )。
答案 1 :(得分:3)
其中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。