Class: SideTime

Inherits:
Object
  • Object
show all
Defined in:
lib/side_time/version.rb,
ext/side_time/side_time.c

Overview

class file SideTime

Constant Summary collapse

VERSION =

version 0.1.0

'0.1.0'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeObject

Create CalcSun class Ruby object.



26
27
28
# File 'ext/side_time/side_time.c', line 26

static VALUE t_init(VALUE self){
  return self;
}

Instance Attribute Details

#dateObject

Instance Method Details

#ajd(date) ⇒ Object

convert Date or DateTime object to AJD number.



59
60
61
62
# File 'ext/side_time/side_time.c', line 59

static VALUE func_get_ajd(VALUE self, VALUE vdate){
  double ajd = NUM2DBL(rb_funcall(vdate, rb_intern("ajd"), 0));
  return DBL2NUM(ajd);
}

#gmst(date) ⇒ Object

calculate Greenwhich Mean Sidereal Time.



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'ext/side_time/side_time.c', line 70

static VALUE func_mean_sidetime(VALUE self, VALUE vdate){
  double ajd = NUM2DBL(func_get_ajd(self, vdate));
  long double sidereal;
  long double t;
  t = (ajd - 2451545.0) / 36525.0;
  /* calc mean angle */
  sidereal =
  280.46061837 +
  (360.98564736629 * (ajd - 2451545.0)) +
  (0.000387933 * t * t) -
  (t * t * t / 38710000.0);
  sidereal = fmod(sidereal, 360.0);
  /* change to hours */
  sidereal *= 24.0 / 360.0;
  return DBL2NUM(roundf(sidereal * RND12) / RND12);
}

#jd(date) ⇒ Object

convert Date or DateTime object to JD number.



48
49
50
51
# File 'ext/side_time/side_time.c', line 48

static VALUE func_get_jd(VALUE self, VALUE vdate){
  double jd = NUM2DBL(rb_funcall(vdate, rb_intern("jd"), 0));
  return DBL2NUM(jd);
}

#lmst(date) ⇒ Object

calculate Local Mean Sidereal Time.



93
94
95
96
97
98
99
100
101
102
# File 'ext/side_time/side_time.c', line 93

static VALUE func_local_sidetime(VALUE self, VALUE vdate, VALUE vlon){
  double sidereal;
  double ls;
  double lon = NUM2DBL(vlon);
  sidereal = NUM2DBL(func_mean_sidetime(self, vdate));
  sidereal *= 15.0;
  ls = sidereal + lon;
  ls *= 24.0 / 360.0;
  return DBL2NUM(roundf(ls * RND12) / RND12);
}

#date('yyyy-mm-dd') ⇒ Object

convert input string to Date object.



36
37
38
39
40
# File 'ext/side_time/side_time.c', line 36

static VALUE func_set_datetime(VALUE self, VALUE vdate){
  VALUE cDate = rb_const_get(rb_cObject, rb_intern("DateTime"));
  VALUE day = rb_funcall(cDate, rb_intern("parse"), 1, vdate);
  return day;
}