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

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, _setup_, #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:



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

def air
  @air
end

#axisArray<Numeric> (readonly)

自転軸

Returns:



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

def axis
  @axis
end

#dlArray<Numeric> (readonly)

黄経の補正の係数

Returns:



912
913
914
# File 'lib/when_exe/ephemeris.rb', line 912

def dl
  @dl
end

#first_dayNumeric (readonly)

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

Returns:



900
901
902
# File 'lib/when_exe/ephemeris.rb', line 900

def first_day
  @first_day
end

#jslArray<Numeric> (readonly)

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

Returns:



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

def jsl
  @jsl
end

#jsnArray<Numeric> (readonly)

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

Returns:



928
929
930
# File 'lib/when_exe/ephemeris.rb', line 928

def jsn
  @jsn
end

#jsrArray<Numeric> (readonly)

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

Returns:



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

def jsr
  @jsr
end

#jstArray<Numeric> (readonly)

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

Returns:



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

def jst
  @jst
end

#last_dayNumeric (readonly)

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

Returns:



904
905
906
# File 'lib/when_exe/ephemeris.rb', line 904

def last_day
  @last_day
end

#nnArray<Numeric> (readonly)

木星と土星の相互摂動項

Returns:



924
925
926
# File 'lib/when_exe/ephemeris.rb', line 924

def nn
  @nn
end

#phiArray<Numeric> (readonly)

黄経の係数

Returns:



908
909
910
# File 'lib/when_exe/ephemeris.rb', line 908

def phi
  @phi
end

#radiusArray<Numeric> (readonly)

動径の係数

Returns:



920
921
922
# File 'lib/when_exe/ephemeris.rb', line 920

def radius
  @radius
end

#shapeArray<Numeric> (readonly)

惑星の形

Returns:



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

def shape
  @shape
end

#sidArray<Numeric> (readonly)

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

Returns:



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

def sid
  @sid
end

#surface_radiusNumeric (readonly)

半径/km

Returns:



896
897
898
# File 'lib/when_exe/ephemeris.rb', line 896

def surface_radius
  @surface_radius
end

#thetaArray<Numeric> (readonly)

黄緯の係数

Returns:



916
917
918
# File 'lib/when_exe/ephemeris.rb', line 916

def theta
  @theta
end

#zerosHash<String=>Numeric> (readonly)

天体の出没、薄明の閾値

Returns:



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

def zeros
  @zeros
end

Instance Method Details

#apparent_luminosity(t, base) ⇒ Numeric

視光度 / magnitude

Parameters:

Returns:



1053
1054
1055
# File 'lib/when_exe/ephemeris.rb', line 1053

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:



1040
1041
1042
1043
# File 'lib/when_exe/ephemeris.rb', line 1040

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:



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

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:



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

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:



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

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:



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

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:



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

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

#mean_motionNumeric

平均運動 / (DEG / YEAR)

Returns:



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

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

#true_longitude(t) ⇒ Numeric

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

Parameters:

Returns:



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

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