Map the Debris

題目:
  計算所在海拔的軌道週期,軌道周期指一顆行星(或其他天體)環繞軌道一周需要的時間。(from wikipedia entry),奢熱資料有name跟avgAlt(平均海拔高度)
function orbitalPeriod(arr) {
  var GM = 398600.4418;
  var earthRadius = 6367.4447;
  var radius;
  var orbitalPeriod;
  var result = [];
  arr.forEach(function(emt)
              {
                  radius = earthRadius + emt.avgAlt ;
                  orbitalPeriod = Math.round( 2* Math.PI * Math.pow(Math.pow(radius, 3)/GM, 0.5) ); //Math.pow(base, expon)
                  result.push({"name":emt.name, "orbitalPeriod": orbitalPeriod });
              });

  return result;
}

orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]);
orbitalPeriod([{name: "iss", avgAlt: 413.6}, {name: "hubble", avgAlt: 556.7}, {name: "moon", avgAlt: 378632.553}]);

測試的正確結果

orbitalPeriod([{name : "sputnik", avgAlt : 35873.5553}]) 应该返回 [{name: "sputnik", orbitalPeriod: 86400}].
orbitalPeriod([{name: "iss", avgAlt: 413.6}, {name: "hubble", avgAlt: 556.7}, {name: "moon", avgAlt: 378632.553}]) 应该返回 [{name : "iss", orbitalPeriod: 5557}, {name: "hubble", orbitalPeriod: 5734}, {name: "moon", orbitalPeriod: 2377399}].

Solution:

  這題要用天文學中繞中心天體在圓形或者橢圓軌道上運轉的小天體軌道周期相關的天文物理學知識來解題,所幸題目已經給了Wikipedia的軌道周期的條目了,我們只要照著下面公式帶入計算就可以知道天體在圓形或橢圓形軌道運行的週期,也就是繞一圈需要多久的時間,公式如下:

  其中,μ = GM 〈標準重力參數〉、a,是軌道半長軸長度、 G,是引力常數、 M,是中心天體質量,其中a的值要用地球半徑加上海拔高度作為橢圓形的半長軸的高度,所以a = earthRadius + 各別位置的海拔高度(each.avgAlt),然後套公式運算, π使用Math.PI代入,指數次方(power)使用Math.pow(base, expon),第1個參數為以多少為底數,第2個參數則是決定幾次方,Ex: 2的10次方通常寫成2^(10),在javascript程式裡寫成Math.pow(2, 10),藉由這些數學library,我們可以快速計算出很多科學參數的數值



**P.S. / Reference:  Math.pow()
           wiki entry about orbital period
           標準重力參數

results matching ""

    No results matching ""