Advertisement
Matthen

Ellipse in Circle

Sep 10th, 2014
1,352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. ellipse[t_, \[Theta]_, a_, e_, center : {xc_, yc_}] :=
  2. Module[{b},
  3. b = a Sqrt[1 - e^2]; {xc + a Cos[t] Cos[\[Theta]] -
  4. b Sin[t] Sin[\[Theta]],
  5. yc + b Cos[\[Theta]] Sin[t] + a Cos[t] Sin[\[Theta]]}];
  6. transfoEI[t_, {x_, y_}, e_, a_] :=
  7. Module[{\[CurlyEpsilon], \[Alpha]}, \[CurlyEpsilon] =
  8. Sqrt[1 - e^2]; \[Alpha] =
  9. a \[CurlyEpsilon] Re[EllipticE[t, -(e^2/\[CurlyEpsilon]^2)]];
  10. {Cos[\[Alpha]] + (1 - a - x + a Cos[t]) Cos[
  11. ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]] + (-y +
  12. a \[CurlyEpsilon] Sin[t]) Sin[
  13. ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]],
  14. Cos[ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]] (-y +
  15. a \[CurlyEpsilon] Sin[t]) +
  16. Sin[\[Alpha]] + (-1 + a + x - a Cos[t]) Sin[
  17. ArcTan[-\[CurlyEpsilon] Cos[t], -Sin[t]] - \[Alpha]]}];
  18. e = 0.9071;
  19. f = 0.44;
  20. a = 0.386;
  21. T = 43.98;
  22. dg = RGBColor[0.15, 0.15, 0.25];
  23. frame[t_] :=
  24. Module[{eMax, b, n, \[Phi], ptC, ptE, \[Tau]},
  25. eMax = Sqrt[1 - a^2];(*curvature limit of ellipse*)
  26.  
  27. If[e > eMax, e = Round[eMax, .0001]];
  28. b = a Sqrt[1 - e^2];
  29. n = \[Pi]/(b EllipticE[e^2/( e^2 - 1)])(* circumference ratio *);
  30. \[Phi] = b EllipticE[t, e^2/(-1 + e^2)] // Re;
  31. ptC = {Cos[\[Phi]], Sin[\[Phi]]};
  32. ptE = ellipse[t, 0, a, e, {1 - a, 0}];
  33. \[Tau] = ArcTan[(-Sqrt[1 - e^2]) Cos[t], -Sin[t]];
  34. Graphics[{
  35. (*base circle*){RGBColor[0.02, 0.0, 0.2], Thick,
  36. Circle[{0, 0}, 1.01],
  37. RGBColor[0.8, 0.8, 0.9], Thickness[0.015],
  38. Circle[{0, 0}, 0.988]
  39. },(*rolling ellipse*)
  40. Rotate[Translate[{{RGBColor[0.99, 0.84, 0.88], Opacity[1.0],
  41. Disk[{1 - a, 0}, {a, b}]}, {Opacity[1], Black,
  42. Circle[{1 - a, 0}, {a, b}], DotDashed, Thickness[.002](*,
  43. Line[{{1,0},{1-2 a ,0}}]*)}},
  44. ptC - ptE], (\[Phi] - \[Tau] - \[Pi]), ptC],
  45. (*trace of pole*)
  46.  
  47. ParametricPlot[
  48. transfoEI[tt, {1 - a - f a , 0}, e, a], {tt, If[t > T, T, 0],
  49. If[t > T, t - T, t]}, PlotStyle -> dg][[1]],
  50. (*pole*){Lighter@dg, PointSize[.015],
  51. Point[transfoEI[t, {1 - a - f a , 0}, e, a]], Black(*,Point[
  52. transfoEI[t,{1-a ,0},e,a]]*)}}
  53. , TicksStyle -> 8, PlotRange -> 1.03,
  54. ImageSize -> 1.1 {270, 270}]];
  55. Manipulate[
  56. frame[t],
  57. {t, 0.001, 2 T - 0.001},
  58. SaveDefinitions -> True]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement