Class: When::Coordinates::Spatial

Inherits:
BasicTypes::Object show all
Includes:
Ephemeris
Defined in:
lib/when_exe/coordinates.rb

Overview

空間位置

Defined Under Namespace

Modules: Normalize

Constant Summary collapse

LabelProperty =
'label'
DEGREE =

Degree / Internal Location Unit(16“)

(3600 を 2 の因数で割りつくした値を単位とする)
225
ECLIPTIC =

黄道座標 (ecliptic coordinate system)

0
EQUATORIAL =

赤道座標 (equatorial coordinate system)

1
HORIZONTAL =

地平座標 (horizontal coordinate system)

2
CENTER =

惑星中心の高度

:center

Constants included from Ephemeris

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

Constants included from Parts::Resource

Parts::Resource::Prefix, Parts::Resource::PrefixIndex, Parts::Resource::PrefixKeys, Parts::Resource::PrefixValues

Instance Attribute Summary collapse

Attributes inherited from BasicTypes::Object

#label

Attributes included from Parts::Resource

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

Instance Method Summary collapse

Methods included from 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

#method_missing(name, *args, &block) ⇒ Object (private)

その他のメソッド

When::Coordinates::Spatial で定義されていないメソッドは
処理を @datum (type: When::Ephemeris::Datum) に委譲する


1355
1356
1357
# File 'lib/when_exe/coordinates.rb', line 1355

def method_missing(name, *args, &block)
  @datum.send(name.to_sym, self, *args, &block)
end

Instance Attribute Details

#altNumeric, :Center (readonly)

高度 / m

Returns:

  • (Numeric)
  • (:Center)

    天体の中心の場合



1230
1231
1232
# File 'lib/when_exe/coordinates.rb', line 1230

def alt
  @alt
end

#datumWhen::Ephemeris::Datum (readonly)

座標系



1236
1237
1238
# File 'lib/when_exe/coordinates.rb', line 1236

def datum
  @datum
end

#latNumeric (readonly)

北緯を正とする緯度 / 16秒

Returns:



1217
1218
1219
# File 'lib/when_exe/coordinates.rb', line 1217

def lat
  @lat
end

#longNumeric (readonly)

東経を正とする経度 / 16秒

Returns:



1223
1224
1225
# File 'lib/when_exe/coordinates.rb', line 1223

def long
  @long
end

#refString (readonly)

参照

Returns:



1242
1243
1244
# File 'lib/when_exe/coordinates.rb', line 1242

def ref
  @ref
end

#tzTZInfo::CountryTimezone (readonly)

時間帯(オプショナル)

Returns:

  • (TZInfo::CountryTimezone)

    TZInfoライブラリから経緯度を取得して使用する



1250
1251
1252
# File 'lib/when_exe/coordinates.rb', line 1250

def tz
  @tz
end

Instance Method Details

#_coords(t) ⇒ Numeric

観測地の日心三次元座標(黄道座標)

Parameters:

Returns:



1302
1303
1304
1305
# File 'lib/when_exe/coordinates.rb', line 1302

def _coords(t)
  t   = +t
  @datum._coords(t) + _coords_diff(t)
end

#horizonNumeric

観測地での‘大地’の視半径

Returns:



1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
# File 'lib/when_exe/coordinates.rb', line 1265

def horizon
  # 地面以下なら 90度とみなす
  return 0.25 if @alt == :Center || @alt <= 0

  # 観測地の地心距離 / m
  r = obserber_distance * 1000.0

  # 大気効果
  air_effect = @datum.air[1] * @alt / (@datum.air[2] * @alt + r)

  # ‘大地’の視半径
  asin((1.0+air_effect) * r / (r+@alt)) / CIRCLE
end

#local_sidereal_time(t) ⇒ Numeric

観測地の地方恒星時 / 時を返します。

Parameters:

Returns:



1286
1287
1288
1289
1290
1291
1292
1293
# File 'lib/when_exe/coordinates.rb', line 1286

def local_sidereal_time(t)
  t = +t
  c = julian_century_from_2000(t)
  result  = @datum.sid[0] + c * (@datum.sid[1] + c * @datum.sid[2]) + @long / (15.0 * DEGREE)
  result += (cosc(obl(c)) * delta_p(c) +
             (t-When::TimeStandard.delta_t_observed(t)/86400+0.5) % 1) * 24 if @datum.kind_of?(Earth)
  result
end

#obserber_distanceNumeric

観測地の地心距離 / kmを返します。

Returns:



1256
1257
1258
1259
# File 'lib/when_exe/coordinates.rb', line 1256

def obserber_distance
  l = PI / (90 * DEGREE) * @lat
  @datum.surface_radius * (@datum.shape[0]+@datum.shape[1]*cos(l)+@datum.shape[2]*cos(2*l))
end