Domanda

I'm trying to come up with a formula to estimate reoccurring times when two orbiting planets will form a target angle. I've made some very important assumptions for the sake of simplicity:

  1. Pretend Kepler's laws do not exist
  2. Pretend the speeds are constant
  3. Pretend both planets are orbiting along the same path
  4. Pretend this path is a circle, NOT an ellipse

Here is a diagram to assist in understanding my challenge (Google Docs): https://docs.google.com/drawings/d/1Z6ziYEKLgc_tlhvJrC93C91w2R9_IGisf5Z3bw_Cxsg/edit?usp=sharing

I ran a simulation and stored data in a spreadsheet (Google Docs): https://docs.google.com/spreadsheet/ccc?key=0AgPx8CZl3CNAdGRRTlBUUFpnbGhOdnAwYmtTZWVoVVE&usp=sharing

Using the stored data from the simulation, I was able to determine a way to estimate the FIRST occurrence that two orbiting planets form a specific angle:


Initial State

Planet 1: position=0 degrees; speed=1 degree/day
Planet 2: position=30 degrees; speed=6 degrees/day
Target Angle: 90 degrees

I performed these steps:

Speed Difference: s2 - s1 ; 6 - 1 = 5 degrees / day
Angle Formed: p2 - p1 ; 30 - 0 = 30 degrees

Find Days Required
Target = Angle + (Speed Diff * Days)
Days (d) = (Target - Angle) / Speed Diff

90 = 30 + 5d
60 = 5d
d = 12 days

Prove:
Position of Planet 1: 0 + (1 * 12) = 12 degrees
Position of Planet 2: 30 + (6 * 12) = 30 + 72 + 102 degrees
Angle: 102 - 12 = 90 degrees

Using this logic, I then returned to an astronomy program that uses Astro's Swiss Ephemeris. The estimated days got me close enough to comfortably pinpoint the date and time when two planets reached the desired angle without affecting application performance.

Here is where my problem lies: Given the information that I know, what approach should I take in order to estimate re-occurring times when a 90 degree angle will be reached again?

Thank you for taking the time to read this in advance.

È stato utile?

Soluzione

There is not a simple formula as such but there is an algorithm you could program to determine the results. Pentadecagon is also correct in that you need to take into account n*360. You are also right in that you stop one of the planets and work on the difference of the speeds.

After d days the difference in degrees between the planets is 30 + d*5.

Since we are only interested in degrees between 0 and 360 then the difference of the angle between planets is (30 + d*5) mod 360.

In case you do not know a mod b gives the remainder when a is divided by b and most programming languages have this operation built in (as do spreadsheets).

You have spotted you want the values of d when the difference is 90 degrees or 270 degrees

So you need to find the values of d whenever

(30 + d*5) mod 360 = 90 or (30 + d*5) mod 360 = 270

pseudo code algorithm

FOR (d=0; d<11; d=d+5)
    IF((30 + d*5) MOD 360 = 90   OR   (30 + d*5) MOD 360 = 270)
        PRINT d
NEXT

Altri suggerimenti

The funny thing about angles is that there are different ways to represent the same angle. So you currently set

Target = 90

One revolution later, the same angle could be written as

Target = 90 + 360 = 450

Or generally, n revolutions later

Target = 90 + n * 360

If you also want the same angle with opposite orientation you can set

Target = -90 + n * 360

If you use solve your equation for each of those target angles, you will find all the events you are looking for.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top