Spirograph: Rolling Circles on a Line or Around a Circle

Spirograph: Rolling Circles on a Line or Around a Circle
Loading the math board and drawing, please wait…
2019-05-30 23:09
① This example demonstrates the classic spirograph patterns generated by tracing a point on a circle as it rolls along a straight line or around another fixed circle. ② Core mathematical concepts include parametric curves, rotation and translation of circles, geometric loci, and the generation of multi-cusped curves, with parameters such as natural numbers (number of cusps) and rotation angles. ③ Construction highlights: using GeoGebra commands such as Circle, Point, Rotate, Segment, Text, CurveCartesian, Line, and Intersect, the applet builds rolling and fixed circles, sliders for radius and rotation, animation and reset buttons, and dynamically updates the traced curve. ④ Suitable for high school to university level mathematics education, useful for exploring parametric equations, geometric transformations, and locus problems, as well as for mathematical art creation.

GeoGebra Commands & Parameters

  1. Circle(CenterCircleFixed, RadiusCircleFixed + RadiusCircleRollings) → c
  2. Circle(CenterCircleFixed, RadiusCircleFixed) → CircleFixed
  3. Point(CircleFixed) → D
  4. Rotate(D, β, CenterCircleFixed) → D'
  5. Point(xAxis) → A
  6. Point(xAxis) → R
  7. Segment(A, R) → f
  8. Text(If[AppearMachineryCircleBoolean, "☑ app. / disapp. machinery", "☐ appear / disappear machinery"]) → AppearMachineryTextCircle
  9. Text(If[AppearCurvesCircleBoolean, "☑ app. / disapp. curves", "☐ app. / disapp. curves"]) → AppearCurvesTextCircle
  10. CurveCartesian((RadiusCircleRolling * α) - (RadiusPen * sin(α)) + ScreenShiftLineX + 5, RadiusCircleRolling - (RadiusPen * cos(α)), α, 0, (4 * π)) → cycloid
  11. Circle(D', RadiusCircleRollings) → d
  12. CurveCartesian(((RadiusCircleFixed + RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX - (RadiusCircleRollings * cos(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed + RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusCircleRollings * sin(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → epicycloid
  13. CurveCartesian(((RadiusCircleFixed + RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX - (RadiusPens * cos(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed + RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusPens * sin(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → epitrochoid
  14. CurveCartesian(((RadiusCircleFixed - RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX + (RadiusCircleRollings * cos(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed - RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusCircleRollings * sin(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → hypocycloid
  15. CurveCartesian(((RadiusCircleFixed - RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX + (RadiusPens * cos(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed - RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusPens * sin(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → hypotrochoid
  16. Circle(CenterCircleRolling, RadiusCircleRolling) → CircleRolling
  17. Circle(CenterCircleRolling, RadiusPen) → CircleRollingPen
  18. Point(CircleRollingPen) → B
  19. Rotate(B, (-α), CenterCircleRolling) → Pen
  20. Segment(CenterCircleRolling, Pen) → PenArm
  21. Line(CenterCircleFixed, D') → PenArmsCircle
  22. Intersect(d, PenArmsCircle, 1) → CenterCircleRolling1
  23. Intersect(d, PenArmsCircle, 2) → CenterCircleRolling2
  24. Circle(CenterCircleRolling1, RadiusCircleRollings) → CircleRolling1
  25. Circle(CenterCircleRolling2, RadiusCircleRollings) → CircleRolling2
  26. Circle(CenterCircleRolling1, RadiusPens) → CircleRollingPen1
  27. Circle(CenterCircleRolling2, RadiusPens) → CircleRollingPen2
  28. Segment(CenterCircleFixed, CenterCircleRolling2) → MainArm
  29. Intersect(CircleRollingPen1, PenArmsCircle, 2) → ToRotatePen1
  30. Intersect(CircleRollingPen2, PenArmsCircle, 1) → ToRotatePen2
  31. Rotate(ToRotatePen1, ((-β) * RadiusRate), CenterCircleRolling1) → Pen1
  32. Rotate(ToRotatePen2, (β * RadiusRate), CenterCircleRolling2) → Pen2
  33. Segment(CenterCircleRolling1, Pen1) → PenArm1
  34. Segment(CenterCircleRolling2, Pen2) → PenArm2

AI Drawing Prompt Reference

Draw a Spirograph pattern showing the locus of a point on a circle rolling along a straight line or around another fixed circle. Include a fixed circle and a rolling circle with adjustable radii via sliders. Display parametric curves formed by the point on the rolling circle, such as epicycloids, hypocycloids, and epitrochoids. Add animation and reset buttons to dynamically visualize the curve generation process.
The prompt above was compiled from the original drawing commands and is for reference only.