Class: Suntrack
- Inherits:
-
Object
- Object
- Suntrack
- Defined in:
- lib/suntrack.rb
Overview
Main methods for Ruby version of calculations in “Astronomy on the Personal Computer”, by Montenbruck and Pfleger (1991).
Defined Under Namespace
Constant Summary collapse
- @@attributes =
{}
Class Method Summary collapse
-
.method_missing(name, *args) ⇒ Object
allow user to create new star location functions User must define declination and right ascension.
-
.sirius_location(date_time, latitude, longitude) ⇒ Suntrack::Point3D
Returns Sirius location, in altitude(sirius_position.y) and azimuth(sirius_position.z), given DateTime, latitude and longitude.
-
.sun_location(date_time, latitude, longitude) ⇒ Suntrack::Point3D
Returns Sun location, in altitude(sun_position.y) and azimuth(sun_position.z), given DateTime, latitude and longitude.
Class Method Details
.method_missing(name, *args) ⇒ Object
allow user to create new star location functions User must define declination and right ascension
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/suntrack.rb', line 42 def self.method_missing name, *args attribute = name.to_s if attribute =~ /=$/ @@attributes[attribute.chop] = args[0] elsif attribute =~ /location/ @@star = attribute.match(/(\w+)_location/)[1] begin dt = DateTime.now mjd = Suntrack::RAstro.to_mjd(args[0]) tau = 15 * (Suntrack::RAstro.lmst(mjd,args[2]) - @@attributes["#{@@star}_ra"]) z_in = Suntrack::Point3D.new(@@attributes["#{@@star}_declination"],tau,args[1]) z = z_in.equatorial_to_horizon z rescue Exception => ex p "Suntrack ERROR: Please define declination and right ascension for #{@@star}" end end end |
.sirius_location(date_time, latitude, longitude) ⇒ Suntrack::Point3D
Returns Sirius location, in altitude(sirius_position.y) and azimuth(sirius_position.z), given DateTime, latitude and longitude
32 33 34 35 36 37 38 |
# File 'lib/suntrack.rb', line 32 def self.sirius_location(date_time,latitude,longitude) mjd = Suntrack::RAstro.to_mjd(date_time) tau = 15 * (Suntrack::RAstro.lmst(mjd,longitude) - Suntrack::RAstro::SIRIUS_RA) z_in = Suntrack::Point3D.new(Suntrack::RAstro::SIRIUS_DECLINATION,tau,latitude) sirius_position = z_in.equatorial_to_horizon sirius_position end |
.sun_location(date_time, latitude, longitude) ⇒ Suntrack::Point3D
Returns Sun location, in altitude(sun_position.y) and azimuth(sun_position.z), given DateTime, latitude and longitude
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/suntrack.rb', line 14 def self.sun_location(date_time,latitude,longitude) mjd = Suntrack::RAstro.to_mjd(date_time) jd = Suntrack::RAstro.jd(mjd) tm = Suntrack::RAstro.get_time(jd) dec = Suntrack::RAstro.sun_position(tm) tau = 15 * (Suntrack::RAstro.lmst(mjd,longitude) - dec.z) z_in = Suntrack::Point3D.new(dec.y,tau,latitude) sun_position = z_in.equatorial_to_horizon sun_position end |