Advertisement
Matthen

Holditch

Jan 21st, 2014
652
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. curve[\[Theta]_] := {0.7 Sin[\[Theta]], Cos[\[Theta]]};
  2. \[Theta]2[curve_, \[Theta]_, l_] := Module[{solns, \[Theta]2},
  3. solns = \[Theta]t /. (Quiet@
  4. NSolve[Norm[curve[\[Theta]t] - curve[\[Theta]]] ==
  5. l, \[Theta]t]);
  6. \[Theta]2 = SortBy[solns, Mod[\[Theta] - #, 2 Pi] &][[1]]
  7. ];
  8. l = 1.3;
  9. n = 300;
  10. \[Theta]s = Table[N@\[Theta], {\[Theta], 0, 2 Pi, 2 Pi/n}];
  11. \[Theta]2s =
  12. Table[\[Theta]2[curve, \[Theta], l], {\[Theta], \[Theta]s}];
  13. m = 20;
  14. js = Flatten@Table[If[j != 0.5, j, {}], {j, 1/m, 1 - 1/m, 1/m}];
  15. AppendTo[js, 0.5];
  16. Manipulate[
  17. Module[{p, q, lower, upper},
  18. p = curve[\[Theta]s[[Mod[i, n, 1]]]];
  19. q = curve[\[Theta]2s[[Mod[i, n, 1]]]];
  20. If[i < n,
  21. lower = 1;
  22. upper = i;
  23. ,
  24. lower = i - n;
  25. upper = n;
  26. ];
  27. Show[
  28. Graphics[{
  29. {Thick, Black, Line@(curve /@ \[Theta]s)},
  30. Table[
  31. {
  32. If[j == 1/2, Directive[Thick, Black],
  33. ColorData["DarkRainbow"][j]],
  34. Line@(j curve /@ (\[Theta]s[[lower ;; upper]]) + (1 -
  35. j) curve /@ (\[Theta]2s[[lower ;; upper]]))},
  36. {j, js}],
  37. {
  38. PointSize[Medium],
  39. {Darker@Red, PointSize[Large], Point[{p, q}]},
  40. {
  41. Table[
  42. {Darker@ColorData["DarkRainbow"][j], Point[{j p + (1 - j) q}]},
  43. {j, js}]
  44. }
  45. },
  46. Line[{p, q}]
  47. }, ImageSize -> 200]
  48. ]
  49. ],
  50. {i, 1, 2 n, 1}]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement