Generalized Rolling Polygon: Dynamic Rolling Along a Curve
Loading the math board and drawing, please wait…
In collections
GCSE Higher Ch8 Transformations & Constructions
Rolling Circles and Polygons
Rolling Circles and Polygons
Rolling Circles and Polygons
① This example demonstrates a polygon (poly1) rolling along a given path composed of circles and curves, with real-time traces of vertices and edges, visualizing the dynamic process of rolling geometry. ② Core mathematical concepts include rotation, translation, and composite transformations of polygons, as well as parametric curves (CurveCartesian) describing the rolling path, involving geometric transformations and locus generation. ③ Construction highlights: Uses GeoGebra commands Circle, Intersect, Polygon, Rotate, CurveCartesian, and CircleArc to build the base shapes and rolling path; objects such as Sides, A, c, B, C define polygon vertices, Rotate applies rotation, and CurveCartesian generates the rolling trajectory; a slider Roll controls the rolling progress, dynamically updating the polygon's position and vertex traces (e.g., A1, B1–B6, C1–C6). ④ Suitable for high school and above, this is ideal for teaching geometric transformations, parametric equations, and dynamic loci, and serves as an interactive tool for exploring rolling polygon properties.
GeoGebra Commands & Parameters
Circle(A, 1) → cIntersect(c, xAxis) → B, CPolygon(B, C, Sides) → poly1, a, k, D, E, F, G, H, I, J, K, b, d, e, f, g, h, i, jRotate(D, (-2 * π / Sides), C) → A1CurveCartesian(x(C) + (b * cos((2 * π / Sides) - t)), (b * sin((2 * π / Sides) - t)), t, 0, (2 * π / Sides)) → lRotate(poly1, (-2 * π / Sides), C) → poly1'Rotate(poly1, (-2 * π / Sides), C) → C1Rotate(C1, (-2 * π / Sides), B2) → C2Rotate(C2, (-2 * π / Sides), B3) → C3Rotate(C3, (-2 * π / Sides), B4) → C4Rotate(C4, (-2 * π / Sides), B5) → C5Rotate(C5, (-2 * π / Sides), B6) → C6Rotate(C6, (-2 * π / Sides), B7) → C7Rotate(C7, (-2 * π / Sides), B8) → C8Rotate(C8, (-2 * π / Sides), B9) → C9Rotate(C9, (-2 * π / Sides), B10) → C10Rotate(D1, (-2 * π / Sides), B3) → D2Rotate(D2, (-2 * π / Sides), B4) → D3Rotate(D3, (-2 * π / Sides), B5) → D4Rotate(D4, (-2 * π / Sides), B6) → D5Rotate(D5, (-2 * π / Sides), B7) → D6Rotate(D6, (-2 * π / Sides), B8) → D7Rotate(D7, (-2 * π / Sides), B9) → D8Rotate(D8, (-2 * π / Sides), B10) → D9CircleArc(B3, D2, B2) → pCircleArc(B4, D3, D2) → qCircleArc(B5, D4, D3) → rCircleArc(B6, D5, D4) → sCircleArc(B6, D5, D4) → E1CircleArc(B7, D6, D5) → E2CircleArc(B8, D7, D6) → E3CircleArc(B9, D8, D7) → E4CircleArc(B10, D9, D8) → E5Rotate(D9, (-2 * π / Sides), B11) → D10CircleArc(B11, D10, D9) → E6Rotate(D10, (-2 * π / Sides), B12) → D11CircleArc(B12, D11, D10) → E7Rotate(D11, (-2 * π / Sides), B13) → D12CircleArc(B13, D12, D11) → E8CircleArc(B1, B2, D) → tRotate(C10, (-2 * π / Sides), B11) → C11Rotate(C11, (-2 * π / Sides), B12) → C12Rotate(C12, (-2 * π / Sides), B13) → C13Rotate(D12, (-2 * π / Sides), B14) → D13Rotate(C13, (-2 * π / Sides), B14) → C14Rotate(D13, (-2 * π / Sides), B15) → D14CircleArc(B14, D13, D12) → E9CircleArc(B15, D14, D13) → E10CircleArc(B16, D15, D14) → E11CircleArc(B17, D16, D15) → E12Rotate(poly1, If[Roll < (2 * π / Sides), (-Roll), (-2 * π / Sides)], B1) → poly1'_1Rotate(poly1'_1, If[Roll < (4 * π / Sides), (-(Roll - (2 * π / Sides))), (-2 * π / Sides)], B2) → poly2Rotate(poly2, If[Roll < (6 * π / Sides), (-(Roll - (4 * π / Sides))), (-2 * π / Sides)], B3) → poly2'Rotate(poly2', If[Roll < (8 * π / Sides), (-(Roll - (6 * π / Sides))), (-2 * π / Sides)], B4) → poly2''Rotate(poly2'', If[Roll < (10 * π / Sides), (-(Roll - (8 * π / Sides))), (-2 * π / Sides)], B5) → poly2'''Rotate(poly2''', If[Roll < (12 * π / Sides), (-(Roll - (10 * π / Sides))), (-2 * π / Sides)], B6) → poly3Rotate(poly3, If[Roll < (14 * π / Sides), (-(Roll - (12 * π / Sides))), (-2 * π / Sides)], B7) → poly3'Rotate(poly3', If[Roll < (16 * π / Sides), (-(Roll - (14 * π / Sides))), (-2 * π / Sides)], B8) → poly3''Rotate(poly3'', If[Roll < (18 * π / Sides), (-(Roll - (16 * π / Sides))), (-2 * π / Sides)], B9) → poly3'''Rotate(poly3''', If[Roll < (20 * π / Sides), (-(Roll - (18 * π / Sides))), (-2 * π / Sides)], B10) → poly4Rotate(poly4, If[Roll < (22 * π / Sides), (-(Roll - (20 * π / Sides))), (-2 * π / Sides)], B11) → poly4'Rotate(D, If[Roll < (2 * π / Sides), (-Roll), (-2 * π / Sides)], B1) → D'Rotate(D', If[Roll < (4 * π / Sides), (-(Roll - (2 * π / Sides))), (-2 * π / Sides)], B2) → D''Rotate(D'', If[Roll < (6 * π / Sides), (-(Roll - (4 * π / Sides))), (-2 * π / Sides)], B3) → D'''Rotate(D''', If[Roll < (8 * π / Sides), (-(Roll - (6 * π / Sides))), (-2 * π / Sides)], B4) → LRotate(L, If[Roll < (10 * π / Sides), (-(Roll - (8 * π / Sides))), (-2 * π / Sides)], B5) → L'Rotate(L', If[Roll < (12 * π / Sides), (-(Roll - (10 * π / Sides))), (-2 * π / Sides)], B6) → L''Rotate(L'', If[Roll < (14 * π / Sides), (-(Roll - (12 * π / Sides))), (-2 * π / Sides)], B7) → L'''Rotate(L''', If[Roll < (16 * π / Sides), (-(Roll - (14 * π / Sides))), (-2 * π / Sides)], B8) → MRotate(M, If[Roll < (18 * π / Sides), (-(Roll - (16 * π / Sides))), (-2 * π / Sides)], B9) → M'Rotate(M', If[Roll < (20 * π / Sides), (-(Roll - (18 * π / Sides))), (-2 * π / Sides)], B10) → M''Rotate(M'', If[Roll < (22 * π / Sides), (-(Roll - (20 * π / Sides))), (-2 * π / Sides)], B11) → M'''Circle((0, 1), 1) → c_1CurveCartesian(t - sin(t), 1 - cos(t), t, 0, 15.70796) → n
AI Drawing Prompt Reference
Draw a dynamic diagram of a regular polygon rolling along a path composed of circular arcs and curves. The path starts at the intersection of a circle and the horizontal axis. The polygon rotates step by step around this intersection by a fixed angle, moving along the path after each rotation, creating a sequence of positions. Vertices leave trace points during rolling, connected by arcs to show the smooth path. Include a slider to control rolling progress, and display vertex trajectories at different stages, illustrating rotation, translation, and composite transformations.
The prompt above was compiled from the original drawing commands and is for reference only.