Class: When::Ephemeris::Datum

Inherits:
CelestialObject show all
Defined in:
lib/when_exe/ephemeris.rb,
lib/when_exe/region/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::LabelProperty, Parts::Resource::Prefix, Parts::Resource::PrefixIndex, Parts::Resource::PrefixKeys, Parts::Resource::PrefixValues

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

_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 inherited from BasicTypes::Object

#tap

Methods included from Parts::Resource

#[], #^, _extract_prefix, _instance, _parse, _path_with_prefix, #each, #enum_for, #hierarchy, #include?, #included?, #iri, #leaf?, #m17n, #map, #next, #parent, #prev, #registered?

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:



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

def air
  @air
end

#axisArray<Numeric> (readonly)

自転軸

Returns:



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

def axis
  @axis
end

#dlArray<Numeric> (readonly)

黄経の補正の係数

Returns:



910
911
912
# File 'lib/when_exe/ephemeris.rb', line 910

def dl
  @dl
end

#first_dayNumeric (readonly)

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

Returns:



898
899
900
# File 'lib/when_exe/ephemeris.rb', line 898

def first_day
  @first_day
end

#jslArray<Numeric> (readonly)

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

Returns:



930
931
932
# File 'lib/when_exe/ephemeris.rb', line 930

def jsl
  @jsl
end

#jsnArray<Numeric> (readonly)

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

Returns:



926
927
928
# File 'lib/when_exe/ephemeris.rb', line 926

def jsn
  @jsn
end

#jsrArray<Numeric> (readonly)

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

Returns:



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

def jsr
  @jsr
end

#jstArray<Numeric> (readonly)

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

Returns:



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

def jst
  @jst
end

#last_dayNumeric (readonly)

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

Returns:



902
903
904
# File 'lib/when_exe/ephemeris.rb', line 902

def last_day
  @last_day
end

#nnArray<Numeric> (readonly)

木星と土星の相互摂動項

Returns:



922
923
924
# File 'lib/when_exe/ephemeris.rb', line 922

def nn
  @nn
end

#phiArray<Numeric> (readonly)

黄経の係数

Returns:



906
907
908
# File 'lib/when_exe/ephemeris.rb', line 906

def phi
  @phi
end

#radiusArray<Numeric> (readonly)

動径の係数

Returns:



918
919
920
# File 'lib/when_exe/ephemeris.rb', line 918

def radius
  @radius
end

#shapeArray<Numeric> (readonly)

惑星の形

Returns:



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

def shape
  @shape
end

#sidArray<Numeric> (readonly)

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

Returns:



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

def sid
  @sid
end

#surface_radiusNumeric (readonly)

半径/km

Returns:



894
895
896
# File 'lib/when_exe/ephemeris.rb', line 894

def surface_radius
  @surface_radius
end

#thetaArray<Numeric> (readonly)

黄緯の係数

Returns:



914
915
916
# File 'lib/when_exe/ephemeris.rb', line 914

def theta
  @theta
end

#zerosHash<String=>Numeric> (readonly)

天体の出没、薄明の閾値

Returns:



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

def zeros
  @zeros
end

Instance Method Details

#apparent_luminosity(t, base) ⇒ Numeric

視光度 / magnitude

Parameters:

Returns:



1051
1052
1053
# File 'lib/when_exe/ephemeris.rb', line 1051

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:



1038
1039
1040
1041
# File 'lib/when_exe/ephemeris.rb', line 1038

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:



1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
# File 'lib/when_exe/ephemeris.rb', line 1003

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:



1082
1083
1084
1085
1086
1087
1088
# File 'lib/when_exe/ephemeris.rb', line 1082

def eclipse(t, target, base=Earth)
  t = +t
  distance      = 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:



1064
1065
1066
1067
1068
1069
1070
1071
# File 'lib/when_exe/ephemeris.rb', line 1064

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:



1021
1022
1023
1024
1025
1026
1027
1028
# File 'lib/when_exe/ephemeris.rb', line 1021

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:



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

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

#mean_motionNumeric

平均運動 / (DEG / YEAR)

Returns:



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

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

#true_longitude(t) ⇒ Numeric

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

Parameters:

Returns:



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

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