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::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:



992
993
994
# File 'lib/when_exe/ephemeris.rb', line 992

def air
  @air
end

#axisArray<Numeric> (readonly)

自転軸

Returns:



996
997
998
# File 'lib/when_exe/ephemeris.rb', line 996

def axis
  @axis
end

#dlArray<Numeric> (readonly)

黄経の補正の係数

Returns:



948
949
950
# File 'lib/when_exe/ephemeris.rb', line 948

def dl
  @dl
end

#first_dayNumeric (readonly)

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

Returns:



936
937
938
# File 'lib/when_exe/ephemeris.rb', line 936

def first_day
  @first_day
end

#jslArray<Numeric> (readonly)

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

Returns:



968
969
970
# File 'lib/when_exe/ephemeris.rb', line 968

def jsl
  @jsl
end

#jsnArray<Numeric> (readonly)

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

Returns:



964
965
966
# File 'lib/when_exe/ephemeris.rb', line 964

def jsn
  @jsn
end

#jsrArray<Numeric> (readonly)

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

Returns:



976
977
978
# File 'lib/when_exe/ephemeris.rb', line 976

def jsr
  @jsr
end

#jstArray<Numeric> (readonly)

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

Returns:



972
973
974
# File 'lib/when_exe/ephemeris.rb', line 972

def jst
  @jst
end

#last_dayNumeric (readonly)

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

Returns:



940
941
942
# File 'lib/when_exe/ephemeris.rb', line 940

def last_day
  @last_day
end

#nnArray<Numeric> (readonly)

木星と土星の相互摂動項

Returns:



960
961
962
# File 'lib/when_exe/ephemeris.rb', line 960

def nn
  @nn
end

#phiArray<Numeric> (readonly)

黄経の係数

Returns:



944
945
946
# File 'lib/when_exe/ephemeris.rb', line 944

def phi
  @phi
end

#radiusArray<Numeric> (readonly)

動径の係数

Returns:



956
957
958
# File 'lib/when_exe/ephemeris.rb', line 956

def radius
  @radius
end

#shapeArray<Numeric> (readonly)

惑星の形

Returns:



980
981
982
# File 'lib/when_exe/ephemeris.rb', line 980

def shape
  @shape
end

#sidArray<Numeric> (readonly)

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

Returns:



984
985
986
# File 'lib/when_exe/ephemeris.rb', line 984

def sid
  @sid
end

#surface_radiusNumeric (readonly)

半径/km

Returns:



932
933
934
# File 'lib/when_exe/ephemeris.rb', line 932

def surface_radius
  @surface_radius
end

#thetaArray<Numeric> (readonly)

黄緯の係数

Returns:



952
953
954
# File 'lib/when_exe/ephemeris.rb', line 952

def theta
  @theta
end

#zerosHash<String=>Numeric> (readonly)

天体の出没、薄明の閾値

Returns:



988
989
990
# File 'lib/when_exe/ephemeris.rb', line 988

def zeros
  @zeros
end

Instance Method Details

#apparent_luminosity(t, base) ⇒ Numeric

視光度 / magnitude

Parameters:

Returns:



1089
1090
1091
# File 'lib/when_exe/ephemeris.rb', line 1089

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:



1076
1077
1078
1079
# File 'lib/when_exe/ephemeris.rb', line 1076

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:



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

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

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

食分

Parameters:

Returns:



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

def 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

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

離角 / CIRCLE

Parameters:

Returns:



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

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:



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

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:



1015
1016
1017
1018
# File 'lib/when_exe/ephemeris.rb', line 1015

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

#mean_motionNumeric

平均運動 / (DEG / YEAR)

Returns:



1003
1004
1005
# File 'lib/when_exe/ephemeris.rb', line 1003

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

#true_longitude(t) ⇒ Numeric

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

Parameters:

Returns:



1028
1029
1030
1031
# File 'lib/when_exe/ephemeris.rb', line 1028

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