Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sizes = {6, 3, 5.5, 3};
- gear[n_] := ((n + Cos[# n]^2) {Cos[#], Sin[#]}) &
- h = 15;
- Manipulate[
- Show[ParametricPlot[
- {
- RotationMatrix[
- sizes[[2]] \[Theta]/sizes[[1]]].(gear[sizes[[1]]][t]),
- RotationMatrix[-\[Theta] + Pi/(2 sizes[[2]])].(gear[sizes[[2]]][
- t]) + {sizes[[1]] + sizes[[2]] + 1, 0},
- RotationMatrix[
- sizes[[4]] \[Theta]/sizes[[3]]].(gear[sizes[[3]]][t]) + {0, -h},
- RotationMatrix[-\[Theta] + Pi/(2 sizes[[4]])].(gear[sizes[[4]]][
- t]) + {sizes[[3]] + sizes[[4]] + 1, -h}
- }
- , {t, 0, 2 Pi}, PlotStyle -> Thick,
- PlotRange -> {{-8, 16}, {-h - 10, 12}}, Axes -> None,
- MeshStyle -> None, Frame -> None],
- Graphics[
- {
- Darker@Blue, Disk[{0, 0}, 0.8],
- Darker@Purple, Disk[{sizes[[1]] + sizes[[2]] + 1, 0}, 0.8],
- Darker@Yellow, Disk[{0, -h}, 0.8],
- Darker@Green, Disk[{sizes[[3]] + sizes[[4]] + 1, -h}, 0.8],
- Red, PointSize[Large],
- Point[{sizes[[1]] + sizes[[2]] + 1, 0} +
- RotationMatrix[-\[Theta] + Pi/(2 sizes[[2]])].{sizes[[2]] + 1,
- 0}], Darker@Red,
- Table[
- Block[{p},
- p =
- sizes[[1]] RotationMatrix[
- sizes[[2]] \[Theta]/sizes[[1]] -
- Pi (i + 0.5)/sizes[[1]]].{1, 0};
- If[Mod[i, 2 sizes[[2]], 1] == 3, {Point[p]}, {}]
- ]
- , {i, 0, \[Theta] sizes[[2]]/Pi}],
- Red, PointSize[Large],
- Point[{sizes[[3]] + sizes[[4]] + 1, -h} +
- RotationMatrix[-\[Theta] + Pi/(2 sizes[[4]])].{sizes[[4]] + 1,
- 0}], Orange,
- Table[
- Block[{p},
- p = {0, -h} +
- sizes[[3]] RotationMatrix[
- sizes[[4]] \[Theta]/sizes[[3]] -
- Pi (i + 0.5)/sizes[[3]]].{1, 0};
- If[Mod[i, 2 sizes[[4]], 1] == 3, {Point[p]}, {}]
- ]
- , {i, 0, \[Theta] sizes[[4]]/Pi}]
- }
- ]
- ],
- {\[Theta], 0, 22 Pi}
- ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement