Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Banane = Import[
- "https://images-na.ssl-images-amazon.com/images/I/31%2BF3QfjUrL._\
- US500_.jpg"]
- Banane = ImageResize[Binarize[Banane], 200]
- points = ListContourPlot[Reverse[ImageData[Banane]], Contours -> 1];
- pointsC = Cases[Normal[points], _Line, -1][[1, 1]];
- elephantPlot = ListPlot[pointsC, AspectRatio -> Automatic]
- center = Mean[MinMax[pointsC]];
- pts = pointsC[[;; ;; 1]] - 0.5*center;
- elephantPlot = ListPlot[pts, AspectRatio -> Automatic]
- (*pts*)
- ptsX = First /@ pts;
- ListPlot[ptsX]
- ptsY = Last /@ pts;
- ListPlot[ptsY]
- M = Length[pts];
- Nombre = 10;
- xa0 = 1/M*Sum[Part[ptsX, i], {i, 1, M}];
- ya0 = 1/M*Sum[Part[ptsY, i], {i, 1, M}];
- xak = {};
- For[k = 1, k <= Nombre, k++,
- xak = Append[xak,
- 2/M*Sum[Part[ptsX, j]*Cos[(2*k*Pi*j)/M], {j, 1, M}]]]
- (*xak*)
- xbk = {};
- For[k = 1, k <= Nombre, k++,
- xbk = Append[xbk, 2/M*Sum[Part[ptsX, j]*Sin[k*2*Pi*j/M], {j, 1, M}]]]
- (*xbk*)
- X[t_] := xa0 +
- Sum[Part[xak, l]*Cos[l*t] + Part[xbk, l]*Sin[l*t], {l, 1, Nombre}];
- yak = {};
- For[k = 1, k <= Nombre, k++,
- yak = Append[yak, 2/M*Sum[Part[ptsY, j]*Cos[k*2*Pi*j/M], {j, 1, M}]]]
- (*yak*)
- ybk = {};
- For[k = 1, k <= Nombre, k++,
- ybk = Append[ybk, 2/M*Sum[Part[ptsY, j]*Sin[k*2*Pi*j/M], {j, 1, M}]]]
- (*ybk*)
- Y[t_] := ya0 +
- Sum[Part[yak, l]*Cos[l*t] + Part[ybk, l]*Sin[l*t], {l, 1, Nombre}]
- (*X[t]
- Y[t]*)
- Plot[X[t], {t, 0, 140}]
- Plot[Y[t], {t, 0, 140}]
- ParametricPlot[{X[t], Y[t]}, {t, 0, 2*Pi},
- PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
- Max[ptsY] + 10}}]
- Manipulate[
- ParametricPlot[{X[t], Y[t]}, {t, 0, a},
- PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
- Max[ptsY] + 10}}], {a, 0.001, 6.28}]
- Animate[ParametricPlot[{X[t], Y[t]}, {t, 0, a},
- PlotRange -> {{Min[ptsX] - 10, Max[ptsX] + 10}, {Min[ptsY] - 10,
- Max[ptsY] + 10}}], {a, 0.001, 2*Pi}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement