All about flooble | fun stuff | Get a free chatterbox | Free JavaScript | Avatars
 perplexus dot info

 Worlds in collision (Posted on 2008-02-16)
The equation for an ellipse in polar coordinates is R = p/(1+ecos(t)) where t is the angle between the periapsis and any position on the ellipse, as measured from the origin (focus).

Suppose that two ellipses in the same plane and also sharing the same focus have periapses separated by an angle D. Show that the ellipses intersect if and only if

2p1p2 (1 - e1e2cosD) is at least as large as

p12(1 - e22) + p22(1 - e12)

__________________________________________________

Bonus problem

Suppose that the ellipses were in distinct planes, given by their normals L1 and L2. Now what is the intersection condition?

Note:

The title refers to the fact that planetary orbits are ellipses with common focus.

 See The Solution Submitted by FrankM Rating: 3.0000 (1 votes)

Comments: ( Back to comment list | You must be logged in to post comments.)
 computer exploration Comment 1 of 1

The following Visual Basic 5.0 program seems to verify the results, but of course, is no proof.  For the bonus, it would seem to be necessary just to compute R along the line of intersection of the two planes, for the two ellipses, to see if either one of one ellipse matches either one of the other ellipse.

VERSION 5.00
Begin VB.Form Form1
AutoRedraw      =   -1  'True
Caption         =   "Form1"
ClientHeight    =   9330
ClientLeft      =   1275
ClientTop       =   825
ClientWidth     =   12210
ScaleHeight     =   16.457
ScaleMode       =   7  'Centimeter
ScaleWidth      =   21.537
Begin VB.TextBox txtNum2
Height          =   285
Left            =   240
TabIndex        =   12
Top             =   9000
Width           =   855
End
Begin VB.TextBox txtNum1
Height          =   285
Left            =   240
TabIndex        =   11
Top             =   8640
Width           =   855
End
Begin VB.TextBox txtD
Height          =   285
Left            =   11040
TabIndex        =   8
Top             =   840
Width           =   975
End
Begin VB.CommandButton cmdStart
Caption         =   "Start"
Default         =   -1  'True
Height          =   495
Left            =   11280
TabIndex        =   10
Top             =   8640
Width           =   855
End
Begin VB.TextBox txtE2
Height          =   285
Left            =   11040
TabIndex        =   7
Top             =   480
Width           =   975
End
Begin VB.TextBox txtP2
Height          =   285
Left            =   11040
TabIndex        =   4
Top             =   120
Width           =   975
End
Begin VB.TextBox txtE1
Height          =   285
Left            =   600
TabIndex        =   3
Top             =   480
Width           =   975
End
Begin VB.TextBox txtP1
Height          =   285
Left            =   600
TabIndex        =   0
Top             =   120
Width           =   975
End
Begin VB.Label Label5
Caption         =   "D:"
Height          =   255
Left            =   10680
TabIndex        =   9
Top             =   840
Width           =   255
End
Begin VB.Label Label4
Caption         =   "e2:"
Height          =   255
Left            =   10680
TabIndex        =   6
Top             =   480
Width           =   255
End
Begin VB.Label Label3
Caption         =   "p2:"
Height          =   255
Left            =   10680
TabIndex        =   5
Top             =   120
Width           =   255
End
Begin VB.Label Label2
Caption         =   "e1:"
Height          =   255
Left            =   240
TabIndex        =   2
Top             =   480
Width           =   255
End
Begin VB.Label Label1
Caption         =   "p1:"
Height          =   255
Left            =   240
TabIndex        =   1
Top             =   120
Width           =   255
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim pi, dr, x, y, xOffset, yOffset

Private Sub cmdStart_Click()
pi = Atn(1) * 4: dr = pi / 180
xOffset = ScaleWidth * 2 / 3: yOffset = ScaleHeight / 2

Cls

txtNum1 = 2 * Val(txtP1) * Val(txtP2) * (1 - Val(txtE1) * Val(txtE2) * Cos(Val(txtD) * dr))
txtNum2 = Val(txtP1) ^ 2 * (1 - Val(txtE2) ^ 2) + Val(txtP2) ^ 2 * (1 - Val(txtE1) ^ 2)

p = Val(txtP1): e = Val(txtE1): D = 0
For t = 0 To 360
position p, e, t, 0
If t = 0 Then PSet (x, y) Else Line -(x, y)
Next

p = Val(txtP2): e = Val(txtE2): D = Val(txtD)
For t = 0 To 360
position p, e, t, D
If t = 0 Then PSet (x, y) Else Line -(x, y)
Next

End Sub

Sub position(p, e, t, D)
r = p / (1 + e * Cos(t * dr))
x = xOffset + r * Cos((t + D) * dr)
y = yOffset - r * Sin((t + D) * dr)
End Sub

 Posted by Charlie on 2008-02-16 12:48:43

 Search: Search body:
Forums (0)