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
2p
1p
2 (1 - e
1e
2cosD) is at least as large as
p
12(1 - e
22) + p
22(1 - e
12)
__________________________________________________
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.
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
LinkTopic = "Form1"
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 |