Parent

Included Modules

Class Index [+]

Quicksearch

When::Ephemeris::Coords

天体の座標

Public Class Methods

new(*args) click to toggle source

オブジェクトの生成

  引数パターン 1
    x : x 座標
    y : y 座標
    z : z 座標

  引数パターン 2
    ll : 経度 / CIRCLE
    tb : 緯度 / CIRCLE
    rr : 距離
    c  : 周回数

  両パターン共通
    c : 周回数(デフォルト - ll から生成)
      z軸の周りを何週して現在の位置にあるかを保持する
    options : Hash
      :system => :rectangular - 引数パターン 1
      :system => その他       - 引数パターン 2
     # File when/ephemeris.rb, line 628
628:     def initialize(*args)
629:       @options = args[1].kind_of?(Hash) ? args.pop.dup : {}
630:       if @options[:system] == :rectangular
631:         @x, @y, @z, @c = args
632:         @x  ||= 0.0  # X座標
633:         @y  ||= 0.0  # Y座標
634:         @z  ||= 0.0  # Z座標
635:       else
636:         @ll, @tb, @rr, @c = args
637:         @ll ||= 0.0  # 経度
638:         @tb ||= 0.0  # 緯度
639:         @rr ||= 1.0  # 距離
640:         @c  ||= @ll  # 周期番号
641:         @ll -= (@ll - @c + 0.5) % 1
642:       end
643:     end
rectangular(x, y, z, c=nil) click to toggle source

オブジェクトの生成

  x : x 座標
  y : y 座標
  z : z 座標
  c : 周回数(デフォルト - ll から生成)
    極座標との1対1対応を保証するため、z軸の周りを何週して
    現在の位置にあるかを保持する
     # File when/ephemeris.rb, line 340
340:       def rectangular(x, y, z, c=nil)
341:         Coords.new(x, y, z, c, {:system=>:rectangular})
342:       end

Public Instance Methods

+(other) click to toggle source

加法

     # File when/ephemeris.rb, line 403
403:     def +(other)
404:       raise TypeError, 'operand should be When::Ephemeris::Coords' unless Coords === other
405:       self.class.rectangular(x+other.x, y+other.y, z+other.z, c+other.c)
406:     end
-(other) click to toggle source

減法

     # File when/ephemeris.rb, line 409
409:     def -(other)
410:       raise TypeError, 'operand should be When::Ephemeris::Coords' unless Coords === other
411:       self.class.rectangular(x-other.x, y-other.y, z-other.z, c-other.c)
412:     end
-@() click to toggle source

点対称の反転

     # File when/ephemeris.rb, line 415
415:     def -@
416:       self.class.polar(ll+0.5, -tb, rr, c)
417:     end
[](z) click to toggle source

要素参照

  z       : 要素名('x', 'y', 'z', 'll', 'tb', 'r', 'c', :x, :y, :z, :ll, :tb, :r, :c)
  returns : 要素の値
     # File when/ephemeris.rb, line 398
398:     def [](z)
399:       send(z.to_sym)
400:     end
c() click to toggle source

周回数

     # File when/ephemeris.rb, line 391
391:     def c  ; @c  || polar[3] ; end
cos_esp(other) click to toggle source

太陽から見た地球と惑星の視距離の余弦

  cosine of angle Earth - Sun - Planet

  returns : Numeric
cos_pes(planet) click to toggle source

地球から見た惑星と太陽の視距離の余弦

  cosine of angle Planet - Earth - Sun

  returns : Numeric
     # File when/ephemeris.rb, line 585
585:     def cos_pes(planet)
586:       spherical_law_of_cosines(self - planet)
587:     end
cos_spe(planet) click to toggle source

惑星から見た太陽と地球の視距離の余弦(惑星の満ち具合)

  cosine of angle Sun - Planet - Earth

  returns : Numeric
     # File when/ephemeris.rb, line 594
594:     def cos_spe(planet)
595:       planet.spherical_law_of_cosines(planet - self)
596:     end
ll() click to toggle source

経度 / CIRCLE

     # File when/ephemeris.rb, line 382
382:     def ll ; @ll || polar[0] ; end
luminosity_spe(planet) click to toggle source

惑星の明るさ

  luminosity used cosine of angle Sun - Planet - Earth

  returns : Numeric
     # File when/ephemeris.rb, line 603
603:     def luminosity_spe(planet)
604:       difference = planet - self
605:       (planet.spherical_law_of_cosines(difference) + 1) / ( 2 * planet.rr * planet.rr * difference.rr * difference.rr)
606:     end
nutation(c) click to toggle source

章動

  c       : 2000年からの経過世紀

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 460
460:     def nutation(c)
461:       rotate_z(delta_p(c)).rotate_x(delta_e(c))
462:     end
parallax(t, loc) click to toggle source

地心視差 (黄道座標) / 地心位置 -> 測心位置(観測地中心位置)

  t       : ユリウス日(Terrestrial Time)または(Temporal)Positionオブジェクト
  loc     : When::Coordinates::Spatial
    観測地

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 509
509:     def parallax(t, loc)
510:       return self if loc.alt==When::Coordinates::Spatial::Center
511:       self - loc.coords_diff(t)
512:     end
polar() click to toggle source

極座標

  returns : [ll, tb, rr, c]
    ll : 経度 / CIRCLE
    tb : 緯度 / CIRCLE
    rr : 距離
    c  : 周回数
     # File when/ephemeris.rb, line 374
374:     def polar
375:       @ll, @tb, @rr = _to_p3(@x, @y, @z) unless @rr
376:       @c ||=  @ll
377:       @ll -= (@ll - @c + 0.5) % 1
378:       return [@ll, @tb, @rr, @c]
379:     end
precession(dt, t0) click to toggle source

歳差

  dt      : 分点からの経過時間 / ベッセル世紀
  t0      : 分点               / ベッセル世紀

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 472
472:     def precession(dt, t0)
473:       return self if (tb.abs>=0.25)
474: 
475:       b0 = dt / (360 * 3600.0)
476:       b1 = [0.302, 0.018]
477:       b2 = [0.791, 0.001]
478:       b3 = [0.462, 0.042]
479: 
480:       b1.unshift(2304.250 + 1.396 * t0)
481:       b2.unshift(polynomial(dt, b1))
482:       b3.unshift(2004.682 - 0.853 * t0)
483: 
484:       z0 = b0 * b2[0]
485:       zt = b0 * polynomial(dt, b2)
486:       th = b0 * polynomial(dt, b3)
487: 
488:       a  = ll + z0
489:       b  = th / 2
490:       cA = cosc(a)
491:       sA = sinc(a)
492:       tB = tanc(b)
493:       q  = sinc(th)*(tanc(tb) + tB*cA)
494: 
495:       dRA = atan2(q*sA, 1-q*cA) / CIRCLE
496:       dDC = atan2(tB*(cA-sA*tanc(dRA/2)), 1) / CIRCLE
497: 
498:       self.class.polar(ll + dRA + z0 + zt, tb + 2*dDC, rr, @c)
499:     end
r_to_h(t, loc) click to toggle source

赤道座標 -> 地平座標

  t       : ユリウス日(Terrestrial Time)または(Temporal)Positionオブジェクト
  loc     : When::Coordinates::Spatial
    観測地

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 560
560:     def r_to_h(t, loc)
561:       rotate_z(-loc.local_sidereal_time(t) / 24).
562:       rotate_y(loc.lat / (360*DEGREE) - 0.25)
563:     end
r_to_y(t, loc=nil) click to toggle source

赤道座標 -> 黄道座標

  t       : ユリウス日(Terrestrial Time)または(Temporal)Positionオブジェクト
  loc     : When::Coordinates::Spatial or When::Ephemeris::Datum
    観測地

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 521
521:     def r_to_y(t, loc=nil)
522:       t   = +t
523:       loc = loc.datum unless loc.kind_of?(Datum)
524:       n   = loc.axis_of_rotation(t) if loc
525:       if (n)
526:         c = rotate_z(0.25 - n.rr).
527:             rotate_y(0.25 - n.tb).
528:             rotate_z(+n.ll)
529:       else
530:         c = self
531:       end
532:       return c.rotate_x(-obl(julian_century_from_2000(t)))
533:     end
rectangular() click to toggle source

直交座標

  returns : [x, y, z]
    x : x 座標
    y : y 座標
    z : z 座標
     # File when/ephemeris.rb, line 352
352:     def rectangular
353:       @x, @y, @z = _to_r3(@ll, @tb, @rr) unless @z
354:       return [@x, @y, @z]
355:     end
rotate_x(t) click to toggle source

X 軸を軸とする回転

  t       : 回転角 / CIRCLE

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 425
425:     def rotate_x(t)
426:       cos = cosc(t)
427:       sin = sinc(t)
428:       self.class.rectangular(x, y*cos-z*sin, y*sin+z*cos, c)
429:     end
rotate_y(t) click to toggle source

Y 軸を軸とする回転

  t       : 回転角 / CIRCLE

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 437
437:     def rotate_y(t)
438:       cos = cosc(t)
439:       sin = sinc(t)
440:       self.class.rectangular(z*sin+x*cos, y, z*cos-x*sin, c)
441:     end
rotate_z(t) click to toggle source

Z 軸を軸とする回転

  t       : 回転角 / CIRCLE

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 449
449:     def rotate_z(t)
450:       self.class.polar(ll+t, tb, rr, c+t)
451:     end
rr() click to toggle source

距離

     # File when/ephemeris.rb, line 388
388:     def rr ; @rr || polar[2] ; end
spherical_law_of_cosines(other) click to toggle source

球面の余弦 spherical law of cosines

  returns : Numeric
     # File when/ephemeris.rb, line 569
569:     def spherical_law_of_cosines(other)
570:       sinc(tb)*sinc(other.tb) + cosc(tb)*cosc(other.tb)*cosc(ll-other.ll)
571:     end
Also aliased as: cos_esp
tb() click to toggle source

緯度 / CIRCLE

     # File when/ephemeris.rb, line 385
385:     def tb ; @tb || polar[1] ; end
x() click to toggle source

x 座標

     # File when/ephemeris.rb, line 358
358:     def x ; @x || rectangular[0] ; end
y() click to toggle source

y 座標

     # File when/ephemeris.rb, line 361
361:     def y ; @y || rectangular[1] ; end
y_to_r(t, loc=nil) click to toggle source

黄道座標 -> 赤道座標

  t       : ユリウス日(Terrestrial Time)または(Temporal)Positionオブジェクト
  loc     : When::Coordinates::Spatial or When::Ephemeris::Datum
    観測地

  returns : When::Ephemeris::Coords
     # File when/ephemeris.rb, line 542
542:     def y_to_r(t, loc=nil)
543:       t   = +t
544:       c   = rotate_x(+obl(julian_century_from_2000(t)))
545:       loc = loc.datum unless loc.kind_of?(Datum)
546:       n   = loc.axis_of_rotation(t) if loc
547:       return c unless n
548:       c.rotate_z(-n.ll).
549:         rotate_y(0.25 + n.tb).
550:         rotate_z(0.25 + n.rr)
551:     end
z() click to toggle source

z 座標

     # File when/ephemeris.rb, line 364
364:     def z ; @z || rectangular[2] ; end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.