Spirograph: Rolling Circles on a Line or Around a Circle
Loading the math board and drawing, please wait…
① 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
Circle(CenterCircleFixed, RadiusCircleFixed + RadiusCircleRollings) → cCircle(CenterCircleFixed, RadiusCircleFixed) → CircleFixedPoint(CircleFixed) → DRotate(D, β, CenterCircleFixed) → D'Point(xAxis) → APoint(xAxis) → RSegment(A, R) → fText(If[AppearMachineryCircleBoolean, "☑ app. / disapp. machinery", "☐ appear / disappear machinery"]) → AppearMachineryTextCircleText(If[AppearCurvesCircleBoolean, "☑ app. / disapp. curves", "☐ app. / disapp. curves"]) → AppearCurvesTextCircleCurveCartesian((RadiusCircleRolling * α) - (RadiusPen * sin(α)) + ScreenShiftLineX + 5, RadiusCircleRolling - (RadiusPen * cos(α)), α, 0, (4 * π)) → cycloidCircle(D', RadiusCircleRollings) → dCurveCartesian(((RadiusCircleFixed + RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX - (RadiusCircleRollings * cos(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed + RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusCircleRollings * sin(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → epicycloidCurveCartesian(((RadiusCircleFixed + RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX - (RadiusPens * cos(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed + RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusPens * sin(((RadiusCircleFixed + RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → epitrochoidCurveCartesian(((RadiusCircleFixed - RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX + (RadiusCircleRollings * cos(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed - RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusCircleRollings * sin(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → hypocycloidCurveCartesian(((RadiusCircleFixed - RadiusCircleRollings) * cos(β)) + ScreenShiftCircleX + ScreenLeftX + (RadiusPens * cos(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), ((RadiusCircleFixed - RadiusCircleRollings) * sin(β)) - ScreenShiftCircleY - (RadiusPens * sin(((RadiusCircleFixed - RadiusCircleRollings) / RadiusCircleRollings * β))), β, 0, 360) → hypotrochoidCircle(CenterCircleRolling, RadiusCircleRolling) → CircleRollingCircle(CenterCircleRolling, RadiusPen) → CircleRollingPenPoint(CircleRollingPen) → BRotate(B, (-α), CenterCircleRolling) → PenSegment(CenterCircleRolling, Pen) → PenArmLine(CenterCircleFixed, D') → PenArmsCircleIntersect(d, PenArmsCircle, 1) → CenterCircleRolling1Intersect(d, PenArmsCircle, 2) → CenterCircleRolling2Circle(CenterCircleRolling1, RadiusCircleRollings) → CircleRolling1Circle(CenterCircleRolling2, RadiusCircleRollings) → CircleRolling2Circle(CenterCircleRolling1, RadiusPens) → CircleRollingPen1Circle(CenterCircleRolling2, RadiusPens) → CircleRollingPen2Segment(CenterCircleFixed, CenterCircleRolling2) → MainArmIntersect(CircleRollingPen1, PenArmsCircle, 2) → ToRotatePen1Intersect(CircleRollingPen2, PenArmsCircle, 1) → ToRotatePen2Rotate(ToRotatePen1, ((-β) * RadiusRate), CenterCircleRolling1) → Pen1Rotate(ToRotatePen2, (β * RadiusRate), CenterCircleRolling2) → Pen2Segment(CenterCircleRolling1, Pen1) → PenArm1Segment(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.