Class: When::Ephemeris::Datum

Inherits:
CelestialObject show all
Defined in:
lib/when_exe/ephemeris.rb,
lib/when_exe/ephemeris/planets.rb

Overview

座標の基準になる天体

座標の基準になる天体の特性を定義する

Direct Known Subclasses

Big, Far, Near, Earth, Moon, Sun

Defined Under Namespace

Classes: Big, Far, Near

Constant Summary

Constants included from When::Ephemeris

AU, AcS, BCENT, C0, CIRCLE, COS, COSL, COSLT, COST, DAY, DEG, EPOCH1800, EPOCH1900, EPOCH1975, EPOCH2000, FARAWAY, JCENT, JYEAR, Jupiter, LIN, Mars, Mercury, Neptune, P0B, P0L, P0P, P0dB, P0dL, P1B, P1L, P1R, P2B, P2L, P2Q, P2dL, P3L, P3Q, P4B, P4L, P4Q, P4dL, P5B, P5L, P5Q, P5dL, P5l, P5n, P5r, P5t, P6B, P6L, P6Q, P6dL, P6l, P6n, P6r, P6t, P7B, P7L, P7R, P8B, P8L, P8R, P9B, P9L, P9R, PSEC, Pluto, SIN, SINL, SINLT, SINT, Saturn, Uranus, Venus

Constants included from Parts::Resource

Parts::Resource::ConstList, Parts::Resource::ConstTypes, Parts::Resource::IRIDecode, Parts::Resource::IRIDecodeTable, Parts::Resource::IRIEncode, Parts::Resource::IRIEncodeTable, Parts::Resource::IRIHeader, Parts::Resource::LabelProperty

Instance Attribute Summary collapse

Attributes inherited from CelestialObject

#aberration, #luminosity

Attributes inherited from BasicTypes::Object

#label

Attributes included from Parts::Resource

#_pool, #child, #keys, #locale, #namespace

Instance Method Summary collapse

Methods inherited from CelestialObject

#coords

Methods included from When::Ephemeris

_adjust, _rot, _to_p2, _to_p3, _to_r3, acos, asin, cosc, cosd, delta_e, delta_p, julian_century_from_2000, julian_year_from_1975, obl, polynomial, root, sinc, sind, tanc, tand, trigonometric

Methods included from Parts::Resource

#[], #^, _abbreviation_to_iri, _decode, _encode, _extract_prefix, _instance, _instantiate, _parse, _path_with_prefix, _replace_tags, _setup_, _setup_info, _simplify_path, base_uri, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?, root_dir

Methods included from Parts::Resource::Pool

#[], #[]=, #_pool, #_setup_, #pool_keys

Methods included from Parts::Resource::Synchronize

#synchronize

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class When::Parts::Resource

Instance Attribute Details

#airArray<Numeric> (readonly)

大気の補正

Returns:



994
995
996
# File 'lib/when_exe/ephemeris.rb', line 994

def air
  @air
end

#axisArray<Numeric> (readonly)

自転軸

Returns:



998
999
1000
# File 'lib/when_exe/ephemeris.rb', line 998

def axis
  @axis
end

#dlArray<Numeric> (readonly)

黄経の補正の係数

Returns:



950
951
952
# File 'lib/when_exe/ephemeris.rb', line 950

def dl
  @dl
end

#first_dayNumeric (readonly)

計算式の精度保証期間の下限 / ユリウス日

Returns:



938
939
940
# File 'lib/when_exe/ephemeris.rb', line 938

def first_day
  @first_day
end

#jslArray<Numeric> (readonly)

黄経の係数2 (木星-土星)

Returns:



970
971
972
# File 'lib/when_exe/ephemeris.rb', line 970

def jsl
  @jsl
end

#jsnArray<Numeric> (readonly)

黄経の係数1 (木星-土星)

Returns:



966
967
968
# File 'lib/when_exe/ephemeris.rb', line 966

def jsn
  @jsn
end

#jsrArray<Numeric> (readonly)

動径の係数 (木星-土星)

Returns:



978
979
980
# File 'lib/when_exe/ephemeris.rb', line 978

def jsr
  @jsr
end

#jstArray<Numeric> (readonly)

黄緯の係数 (木星-土星)

Returns:



974
975
976
# File 'lib/when_exe/ephemeris.rb', line 974

def jst
  @jst
end

#last_dayNumeric (readonly)

計算式の精度保証期間の上限 / ユリウス日

Returns:



942
943
944
# File 'lib/when_exe/ephemeris.rb', line 942

def last_day
  @last_day
end

#nnArray<Numeric> (readonly)

木星と土星の相互摂動項

Returns:



962
963
964
# File 'lib/when_exe/ephemeris.rb', line 962

def nn
  @nn
end

#phiArray<Numeric> (readonly)

黄経の係数

Returns:



946
947
948
# File 'lib/when_exe/ephemeris.rb', line 946

def phi
  @phi
end

#radiusArray<Numeric> (readonly)

動径の係数

Returns:



958
959
960
# File 'lib/when_exe/ephemeris.rb', line 958

def radius
  @radius
end

#shapeArray<Numeric> (readonly)

惑星の形

Returns:



982
983
984
# File 'lib/when_exe/ephemeris.rb', line 982

def shape
  @shape
end

#sidArray<Numeric> (readonly)

自転 - 平均太陽の赤経(2000年分点)

Returns:



986
987
988
# File 'lib/when_exe/ephemeris.rb', line 986

def sid
  @sid
end

#surface_radiusNumeric (readonly)

半径/km

Returns:



934
935
936
# File 'lib/when_exe/ephemeris.rb', line 934

def surface_radius
  @surface_radius
end

#thetaArray<Numeric> (readonly)

黄緯の係数

Returns:



954
955
956
# File 'lib/when_exe/ephemeris.rb', line 954

def theta
  @theta
end

#zerosHash<String=>Numeric> (readonly)

天体の出没、薄明の閾値

Returns:



990
991
992
# File 'lib/when_exe/ephemeris.rb', line 990

def zeros
  @zeros
end

Instance Method Details

#apparent_luminosity(t, base) ⇒ Numeric

視光度 / magnitude

Parameters:

Returns:



1091
1092
1093
# File 'lib/when_exe/ephemeris.rb', line 1091

def apparent_luminosity(t, base)
  return @luminosity - 2.5*log10(base._coords(t).luminosity_spe(self._coords(t)))
end

#apparent_radius(t, base = Earth) ⇒ Numeric

視半径 / CIRCLE

Parameters:

Returns:



1078
1079
1080
1081
# File 'lib/when_exe/ephemeris.rb', line 1078

def apparent_radius(t, base=Earth)
  target_coords = self.coords(t, base)
  asin(@surface_radius / (target_coords.radius * AU)) / CIRCLE
end

#axis_of_rotation(t) ⇒ When::Ephemeris::Coords

自転軸の歳差補正

Parameters:

Returns:



1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
# File 'lib/when_exe/ephemeris.rb', line 1043

def axis_of_rotation(t)
  return nil unless @axis
  c1900 = (@axis[0]-1900.0)/100.0
  dt    = (+t-(EPOCH1900-0.68648354))/BCENT - c1900
  Coords.polar(
    (@axis[1][0] + dt * @axis[2][0]) / 360,
    (@axis[1][1] + dt * @axis[2][1]) / 360,
    (@axis[1][2] + dt * @axis[2][2]) / 360
  ).precession(dt, c1900)
end

#elongation(t, target = Sun, base = Earth) ⇒ Numeric

離角 / CIRCLE

Parameters:

Returns:



1104
1105
1106
1107
1108
1109
1110
1111
# File 'lib/when_exe/ephemeris.rb', line 1104

def elongation(t, target=Sun, base=Earth)
  t = +t
  self_coords   = self.coords(t, base)
  target_coords = target.coords(t, base)
  elongation    = acos(self_coords.spherical_law_of_cosines(target_coords)) / CIRCLE
  difference    = (self_coords.phi - target_coords.phi + 0.5) % 1 - 0.5
  return (difference >= 0) ? elongation : -elongation
end

#equation_of_time(t) ⇒ Numeric

均時差 / DAY

Parameters:

Returns:



1061
1062
1063
1064
1065
1066
1067
1068
# File 'lib/when_exe/ephemeris.rb', line 1061

def equation_of_time(t)
  t = +t
  c = julian_century_from_2000(t)
  coords = _coords(t)
  coords = coords.rotate_z(0.5 - (@aberration||0) / coords.radius / 360)
  coords = coords.y_to_r(t, self)
  return 0.5 - ((coords.phi - (@sid[0] + c * (@sid[1] + c * @sid[2])) / 24.0) % 1)
end

#mean_longitude(t) ⇒ Numeric

光行差を含んだ平均黄経 / CIRCLE

Parameters:

Returns:



1017
1018
1019
1020
# File 'lib/when_exe/ephemeris.rb', line 1017

def mean_longitude(t)
  coord = _coords(t)
  coord.c - @aberration / coord.radius / 360
end

#mean_motionNumeric

平均運動 / (DEG / YEAR)

Returns:



1005
1006
1007
# File 'lib/when_exe/ephemeris.rb', line 1005

def mean_motion
  return @phi[0][2]
end

#phase_of_eclipse(t, target, base = Earth) ⇒ Numeric

食分

Parameters:

Returns:



1122
1123
1124
1125
1126
1127
1128
# File 'lib/when_exe/ephemeris.rb', line 1122

def phase_of_eclipse(t, target, base=Earth)
  t = +t
  distance      = acos(self.coords(t, base).spherical_law_of_cosines(target.coords(t, base))) / CIRCLE
  self_radius   = self.apparent_radius(t, base)
  target_radius = target.apparent_radius(t, base)
  return (self_radius + target_radius - distance) / (2.0 * target_radius)
end

#true_longitude(t) ⇒ Numeric

光行差を含んだ真黄経 / CIRCLE

Parameters:

Returns:



1030
1031
1032
1033
# File 'lib/when_exe/ephemeris.rb', line 1030

def true_longitude(t)
  coord = _coords(t)
  coord.phi - @aberration / coord.radius / 360
end