Swe4r (Swiss Ephemeris for Ruby)
The Swe4r rubygem provides a C extension for the standard functions of the Swiss Ephemeris API.
Installation
Install the gem as usual:
[sudo] gem install swe4r
Methods
The following functions of the Swiss Ephemeris API are supported…
- swe_calc_ut
-
Calculation of planets, moon, asteroids, lunar nodes, apogees, fictitious bodies
- swe_houses
-
This function computes house cusps, ascendant, midheaven, etc
- swe_set_ephe_path
-
Set directory path of ephemeris files (not required for Moshier Ephemeris)
- swe_julday
-
Get the Julian day number from year, month, day, hour
- swe_set_topo
-
Set the geographic location for topocentric planet computation
- swe_set_sid_mode
-
This function can be used to specify the mode for sidereal computations
- swe_get_ayanamsa
-
This function computes the ayanamsha, the distance of the tropical vernal point from the sidereal zero point of the zodiac
Examples
The following example demonstrates how to calculate the position of a celestial body such as a planet using the swe_calc_ut function
require 'swe4r'
# Date Information
year = 2012
month = 5
day = 14
hour = 10.15
# Geographic Location
longitude = -112.183333
latitidue = 45.45
altitude = 1468
# Get the Julian day number
jd = Swe4r::swe_julday(year, month, day, hour)
# Set the geographic location for topocentric positions
Swe4r::swe_set_topo(longitude, latitidue, altitude)
# Set the sidereal mode for sidereal positions
Swe4r::swe_set_sid_mode(Swe4r::SE_SIDM_LAHIRI, 0, 0)
# Get the ayanamsha (the distance of the tropical vernal point from the sidereal zero point of the zodiac)
ayanamsha = Swe4r::swe_get_ayanamsa_ut(jd)
# Calculate the position of the Sun
# Use the Moshier Ephemeris (does not require ephemeris files)
# Get high precision speed and sidereal/topocentric positions
body = Swe4r::swe_calc_ut(jd, Swe4r::SE_SUN, Swe4r::SEFLG_MOSEPH|Swe4r::SEFLG_SPEED|Swe4r::SEFLG_TOPOCTR|Swe4r::SEFLG_SIDEREAL)
# Print the results
puts "Longitude: #{body[0]}"
puts "Latitude: #{body[1]}"
puts "Distance in AU: #{body[2]}"
puts "Speed in longitude (deg/day): #{body[3]}"
puts "Speed in latitude (deg/day): #{body[4]}"
puts "Speed in distance (AU/day): #{body[5]}"
puts "Ayanamsha: #{ayanamsha}"
The following example demonstrates how to calculate house cusps, the ascendant, midheaven, and other points on the zodiac using the swe_houses function
require 'swe4r'
# Date Information
year = 2012
month = 5
day = 14
hour = 10.15
# Geographic Location
longitude = -112.183333
latitidue = 45.45
altitude = 1468
# Get the Julian day number
jd = Swe4r::swe_julday(year, month, day, hour)
# Get house details using the Placidus house system
houses = Swe4r::swe_houses(jd, latitidue, longitude, 'P')
# Print the house cusps
(1..12).each do |i|
puts "House ##{i} Cusp: #{houses[i]}"
end
# Print ascendant, midheaven, etc
puts "Ascendant: #{houses[13]}"
puts "Midheaven (MC): #{houses[14]}"
puts "ARMC: #{houses[15]}"
puts "Equatorial Ascendant: #{houses[16]}"
puts "Co-Ascendant (Walter Koch): #{houses[17]}"
puts "Co-Ascendant (Michael Munkasey): #{houses[18]}"
puts "Polar Ascendant (M. Munkasey) : #{houses[19]}"
License
Swe4r is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Swe4r is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Swe4r. If not, see www.gnu.org/licenses/.