Advertisement
Matthen

Coprime Gears

Jun 13th, 2013
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. sizes = {6, 3, 5.5, 3};
  2. h = 15;
  3. Manipulate[
  4. Show[ParametricPlot[
  5. {
  6. RotationMatrix[
  7. sizes[[2]] \[Theta]/sizes[[1]]].(gear[sizes[[1]]][t]),
  8. RotationMatrix[-\[Theta] + Pi/(2 sizes[[2]])].(gear[sizes[[2]]][
  9. t]) + {sizes[[1]] + sizes[[2]] + 1, 0},
  10. RotationMatrix[
  11. sizes[[4]] \[Theta]/sizes[[3]]].(gear[sizes[[3]]][t]) + {0, -h},
  12. RotationMatrix[-\[Theta] + Pi/(2 sizes[[4]])].(gear[sizes[[4]]][
  13. t]) + {sizes[[3]] + sizes[[4]] + 1, -h}
  14. }
  15. , {t, 0, 2 Pi}, PlotStyle -> Thick,
  16. PlotRange -> {{-8, 16}, {-h - 10, 12}}, Axes -> None,
  17. MeshStyle -> None, Frame -> None],
  18. Graphics[
  19. {
  20. Darker@Blue, Disk[{0, 0}, 0.8],
  21. Darker@Purple, Disk[{sizes[[1]] + sizes[[2]] + 1, 0}, 0.8],
  22. Darker@Yellow, Disk[{0, -h}, 0.8],
  23. Darker@Green, Disk[{sizes[[3]] + sizes[[4]] + 1, -h}, 0.8],
  24. Red, PointSize[Large],
  25. Point[{sizes[[1]] + sizes[[2]] + 1, 0} +
  26. RotationMatrix[-\[Theta] + Pi/(2 sizes[[2]])].{sizes[[2]] + 1,
  27. 0}], Darker@Red,
  28. Table[
  29. Block[{p},
  30. p =
  31. sizes[[1]] RotationMatrix[
  32. sizes[[2]] \[Theta]/sizes[[1]] -
  33. Pi (i + 0.5)/sizes[[1]]].{1, 0};
  34. If[Mod[i, 2 sizes[[2]], 1] == 3, {Point[p]}, {}]
  35. ]
  36. , {i, 0, \[Theta] sizes[[2]]/Pi}],
  37.  
  38. Red, PointSize[Large],
  39. Point[{sizes[[3]] + sizes[[4]] + 1, -h} +
  40. RotationMatrix[-\[Theta] + Pi/(2 sizes[[4]])].{sizes[[4]] + 1,
  41. 0}], Orange,
  42. Table[
  43. Block[{p},
  44. p = {0, -h} +
  45. sizes[[3]] RotationMatrix[
  46. sizes[[4]] \[Theta]/sizes[[3]] -
  47. Pi (i + 0.5)/sizes[[3]]].{1, 0};
  48. If[Mod[i, 2 sizes[[4]], 1] == 3, {Point[p]}, {}]
  49. ]
  50. , {i, 0, \[Theta] sizes[[4]]/Pi}]
  51.  
  52. }
  53. ]
  54. ],
  55.  
  56. {\[Theta], 0, 22 Pi}
  57. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement