B-V为开尔文公式

时间:2010-03-11 17:11:50

标签: javascript colors astronomy

寻找“B-V颜色指数到温度转换公式”

我发现了这个javascript:

   var C1 = 3.979145;
   var C2 = -0.654499;
   var C3 = 1.74069;
   var C4 = -4.608815;
   var C5 = 6.7926;
   var C6 = -5.39691;
   var C7 = 2.19297;
   var C8 = -.359496;
   bmv = parseFloat(BV);
   with (Math) {
           logt=
              C1
             +C2*bmv
             +C3*pow(bmv,2)
             +C4*pow(bmv,3)
             +C5*pow(bmv,4)
             +C6*pow(bmv,5)
             +C7*pow(bmv,6)
             +C8*pow(bmv,7);

          t=pow(10,logt);
   }

应该将B-V颜色指数转换为温度。 有没有人理解这是如何工作的,输出值是否是以摄氏度或开尔文为单位的近似值?

它与对数产品有关吗?

2 个答案:

答案 0 :(得分:4)

B-V指数基本上是一种能够改变通过“蓝色”光线的光强度之差的函数。一个“可见的”过滤器进入温度。

该函数可以接近10 9度多项式,其中多项式基本上是C1 * bv 0 + C2 * bv 1 + ...... + C8 * bv 7

由于我们谈论恒星温度,输出将是开尔文。

注意,用于多项式函数的Horner算法通常更精确......

答案 1 :(得分:2)

我认为温度在Kelvin,因为天文学家使用Kelvin而不是Celcius非常常见。

Look here.

如果log base X = Y则X = base Y

 log10(t)= C1 +C2*bmv +C3*pow(bmv,2) +C4*pow(bmv,3)
          +C5*pow(bmv,4) +C6*pow(bmv,5) +C7*pow(bmv,6) 
          +C8*pow(bmv,7); 

 t = pow(10,log10(t));

此外,此公式与 Taylor Series 非常相关。

// Horners algorithm for polynomials 
function Horner(a,n,x)
{
    var result = a[n];
    var i = n - 1;
    while( i >= 0)
    { 
       result = result*x + a[i];
       i-=1; 
    }
    return result;
}

在你的情况下,

Array Cs = {C1,C2,C3,C4,C5,C6,C7,C8};
var temperature = Horner(Cs,8,bmv);