Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ellipse[t_, \[Theta]_, a_, e_, center : {xc_, yc_}] :=
- Module[{b},
- b = a Sqrt[1 - e^2]; {xc + a Cos[t] Cos[\[Theta]] -
- b Sin[t] Sin[\[Theta]],
- yc + b Cos[\[Theta]] Sin[t] + a Cos[t] Sin[\[Theta]]}];
- transfoEI[t_, {x_, y_}, e_, a_] :=
- Module[{\[CurlyEpsilon], \[Alpha]}, \[CurlyEpsilon] =
- Sqrt[1 - e^2]; \[Alpha] =
- a \[CurlyEpsilon] Re[EllipticE[t, -(e^2/\[CurlyEpsilon]^2)]];
- {Cos[\[Alpha]] + (1 - a - x + a Cos[t]) Cos[
- ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]] + (-y +
- a \[CurlyEpsilon] Sin[t]) Sin[
- ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]],
- Cos[ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]] (-y +
- a \[CurlyEpsilon] Sin[t]) +
- Sin[\[Alpha]] + (-1 + a + x - a Cos[t]) Sin[
- ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]]}];
- e = 0.9071;
- f = 0.44;
- a = 0.386;
- T = 43.98;
- dg = RGBColor[0.15, 0.15, 0.25];
- frame[t_] :=
- Module[{eMax, b, n, \[Phi], ptC, ptE, \[Tau]},
- eMax = Sqrt[1 - a^2];(*curvature limit of ellipse*)
- If[e > eMax, e = Round[eMax, .0001]];
- b = a Sqrt[1 - e^2];
- n = \[Pi]/(b EllipticE[e^2/( e^2 - 1)])(* circumference ratio *);
- \[Phi] = b EllipticE[t, e^2/(-1 + e^2)] // Re;
- ptC = {Cos[\[Phi]], Sin[\[Phi]]};
- ptE = ellipse[t, 0, a, e, {1 - a, 0}];
- \[Tau] = ArcTan[(-Sqrt[1 - e^2]) Cos[t], -Sin[t]];
- Graphics[{
- (*base circle*){RGBColor[0.02, 0.0, 0.2], Thick,
- Circle[{0, 0}, 1.01],
- RGBColor[0.8, 0.8, 0.9], Thickness[0.015],
- Circle[{0, 0}, 0.988]
- },(*rolling ellipse*)
- Rotate[Translate[{{RGBColor[0.99, 0.84, 0.88], Opacity[1.0],
- Disk[{1 - a, 0}, {a, b}]}, {Opacity[1], Black,
- Circle[{1 - a, 0}, {a, b}], DotDashed, Thickness[.002](*,
- Line[{{1,0},{1-2 a ,0}}]*)}},
- ptC - ptE], (\[Phi] - \[Tau] - \[Pi]), ptC],
- (*trace of pole*)
- ParametricPlot[
- transfoEI[tt, {1 - a - f a , 0}, e, a], {tt, If[t > T, T, 0],
- If[t > T, t - T, t]}, PlotStyle -> dg][[1]],
- (*pole*){Lighter@dg, PointSize[.015],
- Point[transfoEI[t, {1 - a - f a , 0}, e, a]], Black(*,Point[
- transfoEI[t,{1-a ,0},e,a]]*)}}
- , TicksStyle -> 8, PlotRange -> 1.03,
- ImageSize -> 1.1 {270, 270}]];
- Manipulate[
- frame[t],
- {t, 0.001, 2 T - 0.001},
- SaveDefinitions -> True]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement