module Ephemeris::Zodiac::Aspect

Public Class Methods

orb_range_by_target_at_aries_pisces( planet_1, planet_2, coverage) click to toggle source
# File lib/ephemeris/zodiac/aspect.rb, line 14
def self.orb_range_by_target_at_aries_pisces( planet_1, planet_2, coverage)
  # Try it the other way around
  point = planet_1.position

  if point < coverage or point+coverage > 360
    # Ok, now for the hard part
    if point < coverage
      # Aries with a lower Pisces
      pisces_range = [340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359]
      difference = (point - coverage).round
      pisces_range = pisces_range[ difference ]...360
      return Ephemeris::Zodiac::Orb.new( [ pisces_range, 0..point+coverage], planet_2 )
    else
      # Pisces side upper Aries
      difference = point + coverage - 360
      return Ephemeris::Zodiac::Orb.new( [point-coverage...360, 0...difference], planet_2 )
    end
  else
    return Ephemeris::Zodiac::Orb.new( (point - coverage)..(point + coverage), planet_2 )
  end
end
orb_range_defined_by_target( planet_1, planet_2 ) click to toggle source
# File lib/ephemeris/zodiac/aspect.rb, line 3
def self.orb_range_defined_by_target( planet_1, planet_2 )
  coverage = (planet_1.class::ORB + planet_2.class::ORB).to_f / 2
  point = planet_2.position

  if point < coverage or point+coverage > 360
    return self.orb_range_by_target_at_aries_pisces( planet_1, planet_2, coverage)
  else
    return Ephemeris::Zodiac::Orb.new( (point - coverage)..(point + coverage), planet_1 )
  end
end