Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. Banane = Import[
  2. "https://images-na.ssl-images-amazon.com/images/I/31%2BF3QfjUrL._\
  3. US500_.jpg"]
  4. Banane = ImageResize[Binarize[Banane], 200]
  5. points = ListContourPlot[Reverse[ImageData[Banane]], Contours -> 1];
  6. pointsC = Cases[Normal[points], _Line, -1][[1, 1]];
  7. elephantPlot = ListPlot[pointsC, AspectRatio -> Automatic]
  8. center = Mean[MinMax[pointsC]];
  9. pts = pointsC[[;; ;; 1]] - 0.5*center;
  10. elephantPlot = ListPlot[pts, AspectRatio -> Automatic]
  11. (*pts*)
  12. ptsX = First /@ pts;
  13. ListPlot[ptsX]
  14. ptsY = Last /@ pts;
  15. ListPlot[ptsY]
  16.  
  17. M = Length[pts];
  18. Nombre = 10;
  19. xa0 = 1/M*Sum[Part[ptsX, i], {i, 1, M}];
  20. ya0 = 1/M*Sum[Part[ptsY, i], {i, 1, M}];
  21. xak = {};
  22. For[k = 1, k <= Nombre, k++,
  23. xak = Append[xak,
  24. 2/M*Sum[Part[ptsX, j]*Cos[(2*k*Pi*j)/M], {j, 1, M}]]]
  25. (*xak*)
  26.  
  27. xbk = {};
  28.  
  29. For[k = 1, k <= Nombre, k++,
  30. xbk = Append[xbk, 2/M*Sum[Part[ptsX, j]*Sin[k*2*Pi*j/M], {j, 1, M}]]]
  31. (*xbk*)
  32.  
  33. X[t_] := xa0 +
  34. Sum[Part[xak, l]*Cos[l*t] + Part[xbk, l]*Sin[l*t], {l, 1, Nombre}];
  35. yak = {};
  36. For[k = 1, k <= Nombre, k++,
  37. yak = Append[yak, 2/M*Sum[Part[ptsY, j]*Cos[k*2*Pi*j/M], {j, 1, M}]]]
  38. (*yak*)
  39. ybk = {};
  40.  
  41. For[k = 1, k <= Nombre, k++,
  42. ybk = Append[ybk, 2/M*Sum[Part[ptsY, j]*Sin[k*2*Pi*j/M], {j, 1, M}]]]
  43. (*ybk*)
  44. Y[t_] := ya0 +
  45. Sum[Part[yak, l]*Cos[l*t] + Part[ybk, l]*Sin[l*t], {l, 1, Nombre}]
  46. (*X[t]
  47. Y[t]*)
  48.  
  49. Plot[X[t], {t, 0, 140}]
  50. Plot[Y[t], {t, 0, 140}]
  51. ParametricPlot[{X[t], Y[t]}, {t, 0, 2*Pi},
  52. PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
  53. Max[ptsY] + 10}}]
  54. Manipulate[
  55. ParametricPlot[{X[t], Y[t]}, {t, 0, a},
  56. PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
  57. Max[ptsY] + 10}}], {a, 0.001, 6.28}]
  58. Animate[ParametricPlot[{X[t], Y[t]}, {t, 0, a},
  59. PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
  60. Max[ptsY] + 10}}], {a, 0.001, 2*Pi}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement