Class: When::CalendarNote::Ephemeris

Inherits:
When::CalendarNote show all
Defined in:
lib/when_exe/ephemeris/notes.rb

Overview

天体暦の暦注

Constant Summary collapse

Notes =
[When::BasicTypes::M17n, [
  "locale:[=en:, ja=ja:, alias=ja:]",
  "names:[Ephemeris]",

  # 年の暦注 ----------------------------
  [When::BasicTypes::M17n,
    "names:[year, 年]"
  ],

  # 月の暦注 ----------------------------
  [When::BasicTypes::M17n,
    "names:[month, 月]",
    [When::BasicTypes::M17n,
      "names:[Month]"
    ]
  ],

  # 日の暦注 ----------------------------
  [When::BasicTypes::M17n,
    "names:[day, 日]",
      "[Sunrise,   日の出          ]", # 日の出
      "[Sunset,    日の入り        ]", # 日の入り
      [When::Coordinates::Residue,
        "label:[Moon_Age=, 正午月齢=ja:%%<月齢>]",
        "divisor:60",
        "format:[%s(%4.1f)=]"
      ],
      "[Moonrise,  月の出          ]", # 月の出
      "[Moonset=,  月の入り        ]", # 月の入り
      [When::BasicTypes::M17n,
        "names:[Tide, 潮汐]",            # 満潮干潮日時
        "[High_Tide=en:Tide, 満潮=ja:%%<潮汐>]",
        "[Low_Tide=en:Tide,  干潮=ja:%%<潮汐>]"
      ],
      "[SolarTerm=,  二十四節気    ]", # 二十四節気
      "[LunarPhase=, 月の位相      ]"  # 月の位相
  ]
]]

Constants inherited from When::CalendarNote

Bahai, CalendarDepend, Chinese, CommonWithRokuyo, CommonWithSovietFiveDay, CommonWithSovietSixDay, Default, HashProperty, Javanese, JulianDay, Mayan, Tibetan, Yis

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

Constants included from Namespace

Namespace::DC, Namespace::DCQ, Namespace::DCT, Namespace::FOAF, Namespace::OWL, Namespace::RDF, Namespace::RDFC, Namespace::RDFS, Namespace::RSS, Namespace::XSD

Instance Attribute Summary

Attributes inherited from When::CalendarNote

#event

Attributes inherited from TM::ReferenceSystem

#domain_of_validity, #position

Attributes inherited from BasicTypes::Object

#label

Attributes included from Parts::Resource

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

Instance Method Summary collapse

Methods inherited from When::CalendarNote

#copy, #day, #duration, #enum_for, #include?, #month, #note?, #notes, #year

Methods inherited from TM::ReferenceSystem

#domain, #name

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, #parent, #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 Method Details

#lunarphase(date, options = {}) ⇒ When::Coordinates::Residue

月の位相



409
410
411
412
413
414
415
# File 'lib/when_exe/ephemeris/notes.rb', line 409

def lunarphase(date, options={})
  @phase ||= When.CalendarNote('LunarPhases')
  longitude, metsu = @phase.position(date)
  div, mod = longitude.divmod(90)
  return nil unless mod == 0
  When.Resource('_co:Common::月相::*')[div]
end

#moon_age(date, options = {}) ⇒ Numeric

正午月齢



297
298
299
300
301
302
# File 'lib/when_exe/ephemeris/notes.rb', line 297

def moon_age(date, options={})
  @phase ||= When.CalendarNote('LunarPhases')
  noon  = date.floor(When::DAY,When::SYSTEM)
  noon += 0.5 if noon.kind_of?(When::TM::DateAndTime)
  @root['Moon_Age'][noon.to_f - @phase.phase(noon, [-30.0,30.0]).to_f]
end

#moonrise(date, options = {}) ⇒ When::TM::TemporalPosition

月の出



312
313
314
315
316
317
318
# File 'lib/when_exe/ephemeris/notes.rb', line 312

def moonrise(date, options={})
  event = formula(date.location.iri).moonrise(date)
  event.events = [@root['Moonrise']]
  event
rescue
  nil
end

#moonset(date, options = {}) ⇒ When::TM::TemporalPosition

月の入り



328
329
330
331
332
333
334
# File 'lib/when_exe/ephemeris/notes.rb', line 328

def moonset(date, options={})
  event = formula(date.location.iri).moonset(date)
  event.events = [@root['Moonset']]
  event
rescue
  nil
end

#solarterm(date, options = {}) ⇒ When::Coordinates::Residue

太陽黄経



392
393
394
395
396
397
398
399
# File 'lib/when_exe/ephemeris/notes.rb', line 392

def solarterm(date, options={})
  @term ||= When.CalendarNote('SolarTerms')
  longitude, motsu = @term.position(date)
  return nil if motsu == 0
  div, mod = longitude.divmod(15)
  return nil unless mod == 0
  When.Resource('_co:Common::二十四節気::*')[div]
end

#sunrise(date, options = {}) ⇒ When::TM::TemporalPosition

日の出



265
266
267
268
269
270
271
# File 'lib/when_exe/ephemeris/notes.rb', line 265

def sunrise(date, options={})
  event = formula(date.location.iri).sunrise(date)
  event.events = [@root['Sunrise']]
  event
rescue
  nil
end

#sunset(date, options = {}) ⇒ When::TM::TemporalPosition

日の入り



281
282
283
284
285
286
287
# File 'lib/when_exe/ephemeris/notes.rb', line 281

def sunset(date, options={})
  event = formula(date.location.iri).sunset(date)
  event.events = [@root['Sunset']]
  event
rescue
  nil
end

#tide(date, options = {}) ⇒ Array<Array<Integer, When::TM::TemporalPosotion>>

干潮・満潮の日時

Options Hash (options):

  • tide (String)

    潮汐計算方式 ‘Horizontal’ - 地平高度基準, ‘Equatorial’ - 子午線通過基準(デフォルト)



349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
# File 'lib/when_exe/ephemeris/notes.rb', line 349

def tide(date, options={})
  return nil unless @interval
  @target  ||= When.Resource('_ep:Moon')
  events     = @root['Tide']
  form       = formula(date.location.iri)
  type       = options[:tide] =~ /\Ahorizon/i ? nil : 0

  now        = +date
  high_tides = []
  5.times do |i|
    high_tide = form.day_event(now + i - 2, type, @target) + @interval
    high_tides << high_tide if high_tides.size == 0 || high_tide > high_tides[-1] + 0.5
  end
  tides = []

  (high_tides.size-1).times do |i|
    tides << [0, high_tides[i]]
    tides << [1, 0.75*high_tides[i] + 0.25*high_tides[i+1]]
    tides << [0, 0.50*high_tides[i] + 0.50*high_tides[i+1]]
    tides << [1, 0.25*high_tides[i] + 0.75*high_tides[i+1]]
  end
  tides << [0, high_tides[-1]]

  today = +date.floor(When::DAY)...+date.ceil(When::DAY)
  seed  = date._attr
  seed[:clock] ||= When::TM::Clock.local_time
  tides.select {|x| today.include?(x[1])}.map {|x|
    d = form._to_seed_type(x[1], seed)
    d.events = [events[x[0]]]
    d
  }
rescue
  nil
end