Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Clear[orbit];
- orbit[{x0_, y0_}, {v0x_, v0y_}] :=
- orbit[{x0, y0}, {v0x, v0y}] = Module[{eqns, soln, x, y, t},
- eqns =
- {x[0] == x0, y[0] == y0, x'[0] == v0x, y'[0] == v0y,
- x''[t] == -x[t]/(x[t]^2 + y[t]^2)^1.5,
- y''[t] == -y[t]/(x[t]^2 + y[t]^2)^1.5};
- soln = {x[t], y[t]} /.
- First[NDSolve[eqns, {x[t], y[t]}, {t, 0, 10}]];
- (soln /. {t -> #}) &
- ];
- eartht = 6.72801;
- earth = {-Cos[2 Pi #/eartht], Sin[2 Pi #/eartht]} &;
- cruithne1 = orbit[{-1.2, 1.2}, {0.4, 0.4}];
- cruithne[t_] := cruithne1[eartht t/5.76]
- earthframe[{x_, y_}, t_] := RotationMatrix[2 Pi t /eartht].{x, y};
- Manipulate[
- Show[
- If[T > eartht,
- ParametricPlot[{earthframe[cruithne[eartht - t], eartht - t]}, {t,
- 0, 2 eartht - T}, PlotRange -> 1.8, Background -> Black,
- Axes -> None, PlotStyle -> Directive[Thick, White]]
- ,
- ParametricPlot[{earthframe[cruithne[t], t]}, {t, 0, T},
- PlotRange -> 1.8, Background -> Black, Axes -> None,
- PlotStyle -> Directive[Thick, White]]
- ],
- ParametricPlot[{earth[t], earthframe[cruithne[t], T]}, {t, 0,
- eartht},
- PlotStyle -> {Directive[Thick, RGBColor[0.6, 0.6, 0.8]],
- Directive[Thick, Darker@Red]}],
- Graphics[{
- {White, Dotted,
- Table[
- Line[{earthframe[{-10, y}, T],
- earthframe[{10, y}, T]}], {y, -10, 10, 0.5}],
- Table[
- Line[{earthframe[{x, -10}, T],
- earthframe[{x, 10}, T]}], {x, -10, 10, 0.5}]
- },
- {Yellow, Disk[earthframe[{0, 0}, T], 0.1],
- EdgeForm[Black],
- RGBColor[0.7, 0.8, 1.0], Disk[earthframe[earth[T], T], 0.07],
- Red, Disk[earthframe[cruithne[Mod[T, eartht]], T], 0.04]}
- }]
- ],
- {T, 0.001, 2 eartht - 0.001}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement