#set document(title: "2.2 Parametric Playground", author: "XYZ Homework") #set page(width: 8.5in, height: auto, margin: 1in) #import "@preview/cetz:0.5.2" #set text(font: ("STIX Two Text", "Libertinus Serif", "New Computer Modern"), size: 10.5pt, lang: "en") #show math.equation: set text(font: ("STIX Two Math", "New Computer Modern Math")) #set par(justify: true, leading: 0.62em, spacing: 0.9em) #set enum(spacing: 1.1em) // room between list items so tall inline fractions don't collide #set list(spacing: 1.1em) #set table(stroke: 0.5pt + rgb("#c7ccd3")) #let BLUE = rgb("#183B6F") // brand navy — section bars + example/solution labels (white on navy 11.09:1) #let ORANGE = rgb("#A94509") // brand primary-700 — AA-safe deep orange for TEXT (5.93:1 on white; raw brand #F37021 is 2.94:1 and must never carry text) #let RED = rgb("#DC2626") // brand error-600 #let GREEN = rgb("#059669") // brand success-600 (decoration only; small green text uses green-text #007942) #show heading.where(level: 1): it => block(width: 100%, above: 0pt, below: 16pt, fill: gradient.linear(BLUE, rgb("#2C5AA0")), inset: (x: 14pt, y: 12pt), radius: 3pt, text(fill: white, weight: "bold", size: 19pt, it.body)) #show heading.where(level: 2): it => block(width: 100%, above: 18pt, below: 10pt, fill: BLUE, inset: (x: 10pt, y: 6pt), radius: 2pt, text(fill: white, weight: "bold", size: 12pt, it.body)) #show heading.where(level: 3): it => text(fill: ORANGE, weight: "bold", size: 12.5pt, it.body) #show heading.where(level: 4): it => text(fill: BLUE, weight: "bold", size: 10.5pt, it.body) #let examplebox(label, title, body) = block(width: 100%, breakable: true, fill: rgb("#EFF1F5"), stroke: 0.5pt + rgb("#CFDDF0"), radius: 4pt, inset: 10pt, above: 12pt, below: 12pt)[ #block(below: 6pt)[#box(fill: BLUE, inset: (x: 6pt, y: 2pt), radius: 2pt, text(fill: white, weight: "bold", size: 8.5pt, label)) #h(0.4em) #strong[#title]] #body] // rail = decorative left rule (raw brand token); labelcolor = AA-safe label text shade #let notebox(label, rail, labelcolor, tint, body) = block(width: 100%, breakable: true, fill: tint, stroke: (left: 3pt + rail), inset: (left: 10pt, rest: 8pt), radius: (right: 4pt), above: 11pt, below: 11pt)[ #text(fill: labelcolor, weight: "bold", size: 7.5pt, tracking: 0.5pt)[#upper(label)] #linebreak() #body] #let solutionbox(body) = block(above: 4pt, below: 8pt)[ #text(fill: BLUE, weight: "bold", size: 8.5pt)[Solution] #linebreak() #body] #let figph(msg) = block(width: 100%, height: 60pt, fill: rgb("#f6f7f9"), stroke: (paint: rgb("#c7ccd3"), dash: "dashed"), radius: 4pt, inset: 10pt)[ #align(center + horizon, text(fill: rgb("#889"), style: "italic", size: 9pt, msg))] // Standardize inlined figure sizes: measure the natural CeTZ canvas, then scale to a // consistent envelope (aspect-aware; see build_typst.py FIG_* constants). Unlike the // print preamble, dimensions are FLOORED: in an editor a user can trim a figure to a // degenerate 1-D shape (a bare line), and w/h or tw/w would then divide by zero. #let _STD_W = 3.5 #let _WIDE_W = 5.6 #let _MAX_H = 3.4 #let _ASPECT_WIDE = 2.2 #let _UPSCALE_MAX = 1.15 #let stdfig(body) = context { let m = measure(body) let w = calc.max(m.width / 1in, 0.01) let h = calc.max(m.height / 1in, 0.01) let tw = if w / h > _ASPECT_WIDE { _WIDE_W } else { _STD_W } let s = calc.min(tw / w, _MAX_H / h, _UPSCALE_MAX) align(center, box(scale(x: s * 100%, y: s * 100%, reflow: true, body))) } #show figure: set block(breakable: false) #set figure(gap: 8pt) #show figure.caption: set text(size: 8.5pt, fill: rgb("#555")) == 2.2#h(0.6em)Parametric Playground #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Read a parametric plane curve as the trace of a motion, not a formula to graph point by point. - Explain how the cycloid's cusps and arch dimensions come from the rolling-wheel parameter. - Use the polar rose to see how a single frequency parameter controls petal count — including the parity surprise. ] Parametric curves earn their keep in the plane long before they need a third dimension. The pair #math.equation(block: false, alt: "x equals f open parenthesis t close parenthesis")[$x = f ( t )$], #math.equation(block: false, alt: "y equals g open parenthesis t close parenthesis")[$y = g ( t )$] describes a #emph[motion], and curves that are awkward or impossible to write as #math.equation(block: false, alt: "y equals F open parenthesis x close parenthesis")[$y = F ( x )$] often have short, transparent parametric stories. This section is a playground with two classic inhabitants, each carrying a slider so you can interrogate the formula by moving it. First, the #strong[cycloid]: the path traced by a pebble stuck to the rim of a wheel of radius #math.equation(block: false, alt: "a")[$a$] rolling along a line. Rolling means the wheel's rotation and its forward travel are locked together — after turning through angle #math.equation(block: false, alt: "t")[$t$], the axle has advanced exactly #math.equation(block: false, alt: "a t")[$a t$]. Subtracting the pebble's position on the rim from the axle's motion gives #math.equation(block: true, alt: "x equals a open parenthesis t minus sin t close parenthesis , y equals a open parenthesis 1 minus cos t close parenthesis .")[$x = a ( t − sin t ) , #h(2em) y = a ( 1 − cos t ) .$] {"camera":{"fov":50,"position":\[9.4,14,11\],"projection":"perspective","target":\[9.4,0,1\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":40,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":40,"visible":true},"id":"d2dd24ba-0a06-4b83-84b9-ec7759e6fa2e","metadata":{"alt\_text":"A thick red curve of three identical arches resting on a dashed gray horizontal line, like the path traced by a pebble stuck to a rolling wheel: each arch rises smoothly from a sharp downward point (a cusp) on the line, crests, and returns to the next cusp. A slider named a sets the rolling wheel's radius: dragging it up makes the arches both taller and wider in the same proportion, and dragging it down shrinks them, while the number of arches shown stays three.","created\_at":"2026-08-01T00:00:00.000Z","description":"Authored book scene: the cycloid (a(t - sin t), a(1 - cos t), 0) for t in \[0, 6 pi\], plotted in the z = 0 plane over a dashed baseline, with a slider a in \[0.5, 2\] for the wheel radius.","tags":\["book","calc3","parametric-curve","cycloid","slider"\],"updated\_at":"2026-08-01T00:00:00.000Z"},"objects":\[{"id":"a90c03ac-7e47-460e-ad67-62f86bf596ef","kind":"parameter","label":{"text":"a (wheel radius)","visible":true},"max":2,"min":0.5,"name":"a","step":0.05,"value":1,"visible":true},{"id":"8863a266-2db4-4bb2-a09c-e6155859753a","kind":"parametric-curve","label":{"text":"cycloid: (a(t - sin t), a(1 - cos t))","visible":true},"samples":600,"style":{"color":"\#ef4444","dash":\[\],"lineWidth":4},"tDomain":\[0,18.85\],"visible":true,"xExpr":"a\*(t - sin(t))","yExpr":"a\*(1 - cos(t))","zExpr":"0"},{"id":"68dffcab-5680-45bf-8692-d3ebb7fd7518","kind":"parametric-curve","label":{"text":"the road (y = 0)","visible":true},"samples":50,"style":{"color":"\#9ca3af","dash":\[5,5\],"lineWidth":2},"tDomain":\[0,38\],"visible":true,"xExpr":"t","yExpr":"0","zExpr":"0"}\],"title":"Cycloid machine: the path of a point on a rolling wheel","version":1} Three arches of the cycloid #math.equation(block: false, alt: "open parenthesis a open parenthesis t minus sin t close parenthesis , a open parenthesis 1 minus cos t close parenthesis close parenthesis")[$( a ( t − sin t ) , a ( 1 − cos t ) )$] over a dashed baseline. Drag the slider for #math.equation(block: false, alt: "a")[$a$] — the wheel's radius — and watch the arches scale. Orbit to look straight down for the cleanest view. === Explore the cycloid + Each arch ends in a sharp point — a #strong[cusp] — where the curve touches the baseline. Physically, the pebble is at the bottom of the wheel there. At which parameter values #math.equation(block: false, alt: "t")[$t$] does that happen, and why does the motion momentarily stall? + Drag #math.equation(block: false, alt: "a")[$a$] from 0.5 to 2. Height and width scale together — read the arch height and the arch width off the grid as multiples of #math.equation(block: false, alt: "a")[$a$]. (You should find height #math.equation(block: false, alt: "2 a")[$2 a$] and width #math.equation(block: false, alt: "2 π a")[$2 π a$].) + The curve never dips below the baseline and never doubles back in #math.equation(block: false, alt: "x")[$x$]. Which parts of the two formulas guarantee each fact? Second, the #strong[polar rose]. A polar curve #math.equation(block: false, alt: "r equals g open parenthesis θ close parenthesis")[$r = g ( θ )$] is secretly parametric: since #math.equation(block: false, alt: "x equals r cos θ")[$x = r cos θ$] and #math.equation(block: false, alt: "y equals r sin θ")[$y = r sin θ$], the graph is the parametric curve #math.equation(block: true, alt: "x equals g open parenthesis t close parenthesis cos t , y equals g open parenthesis t close parenthesis sin t ,")[$x = g ( t ) cos t , #h(2em) y = g ( t ) sin t ,$] with the polar angle as parameter. Take #math.equation(block: false, alt: "g open parenthesis t close parenthesis equals cos open parenthesis b t close parenthesis")[$g ( t ) = cos ( b t )$] for a whole number #math.equation(block: false, alt: "b")[$b$] and you get a rose. {"camera":{"fov":50,"position":\[0.05,3.2,0.05\],"projection":"perspective","target":\[0,0,0\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":8,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":4,"visible":true},"id":"9d6d62bd-c389-4ca0-bbc1-b67e65ce6303","metadata":{"alt\_text":"A violet rose-shaped curve of identical petals radiating from the origin, drawn flat in the plane and inscribed in a dashed gray unit circle, viewed from almost straight overhead. A slider named b sets the frequency in r = cos(b theta): odd values of b draw exactly b petals, while even values draw twice as many, 2b, which is the parity surprise the scene is built to expose.","created\_at":"2026-08-01T00:00:00.000Z","description":"Authored book scene: the polar rose r = cos(b theta) rendered as the parametric curve (cos(bt) cos t, cos(bt) sin t, 0) for t in \[0, 2 pi\], with an integer slider b in \[1, 6\] and a dashed reference unit circle.","tags":\["book","calc3","parametric-curve","polar","rose","slider"\],"updated\_at":"2026-08-01T00:00:00.000Z"},"objects":\[{"id":"b8fabece-fe47-4774-a222-4fd20cd08788","kind":"parameter","label":{"text":"b (petal frequency)","visible":true},"max":6,"min":1,"name":"b","step":1,"value":3,"visible":true},{"id":"129fd533-4a32-465d-8a8a-4371d8183da4","kind":"parametric-curve","label":{"text":"rose r = cos(b\*theta)","visible":true},"samples":1200,"style":{"color":"\#8b5cf6","dash":\[\],"lineWidth":4},"tDomain":\[0,6.29\],"visible":true,"xExpr":"cos(b\*t)\*cos(t)","yExpr":"cos(b\*t)\*sin(t)","zExpr":"0"},{"id":"35f30c48-088d-4bd1-997d-69f3d419bd06","kind":"parametric-curve","label":{"text":"unit circle r = 1","visible":true},"samples":200,"style":{"color":"\#9ca3af","dash":\[4,4\],"lineWidth":1.5},"tDomain":\[0,6.29\],"visible":true,"xExpr":"cos(t)","yExpr":"sin(t)","zExpr":"0"}\],"title":"Polar rose: petal count and the parity surprise","version":1} The rose #math.equation(block: false, alt: "r equals cos open parenthesis b θ close parenthesis")[$r = cos ( b θ )$], drawn inside a dashed unit circle. The slider sets the frequency #math.equation(block: false, alt: "b")[$b$] from 1 to 6 in whole-number steps. Count petals at each value before you trust any rule you have heard. === Explore the rose + Set #math.equation(block: false, alt: "b equals 1")[$b = 1$] and identify the curve (it is a familiar shape in disguise — a circle of radius one half through the origin). Then count petals at #math.equation(block: false, alt: "b equals 2 , 3 , 4 , 5 , 6")[$b = 2 , 3 , 4 , 5 , 6$] and record the counts. + The pattern splits by parity: odd #math.equation(block: false, alt: "b")[$b$] gives #math.equation(block: false, alt: "b")[$b$] petals, even #math.equation(block: false, alt: "b")[$b$] gives #math.equation(block: false, alt: "2 b")[$2 b$]. Watch the curve being traced near a value where #math.equation(block: false, alt: "cos open parenthesis b t close parenthesis")[$cos ( b t )$] is negative: a negative radius plots the point on the #emph[opposite] side of the origin. For odd #math.equation(block: false, alt: "b")[$b$], where do those negative-radius petals land? + Every petal tip touches the dashed circle. Why must the whole rose live inside it? === Why parity decides the petal count A petal is traced each time #math.equation(block: false, alt: "cos open parenthesis b t close parenthesis")[$cos ( b t )$] runs from 0 up to #math.equation(block: false, alt: "± 1")[$± 1$] and back to 0, which happens #math.equation(block: false, alt: "2 b")[$2 b$] times as #math.equation(block: false, alt: "t")[$t$] crosses #math.equation(block: false, alt: "[ 0 , 2 π ]")[$[ 0 , 2 π ]$]. When #math.equation(block: false, alt: "b")[$b$] is even, those #math.equation(block: false, alt: "2 b")[$2 b$] passes land in #math.equation(block: false, alt: "2 b")[$2 b$] distinct directions: #math.equation(block: false, alt: "2 b")[$2 b$] petals. When #math.equation(block: false, alt: "b")[$b$] is odd, the negative-radius passes retrace petals already drawn on the opposite side — each petal is drawn exactly twice — leaving only #math.equation(block: false, alt: "b")[$b$] visible. The slider makes this a two-minute experiment; the algebra behind it is the single identity that #math.equation(block: false, alt: "open parenthesis r , θ close parenthesis")[$( r , θ )$] and #math.equation(block: false, alt: "open parenthesis minus r , θ plus π close parenthesis")[$( − r , θ + π )$] name the same point. #examplebox("Example 1")[Dimensions of a cycloid arch][ A wheel of radius #math.equation(block: false, alt: "a equals 1.5")[$a = 1.5$] rolls along a line. Find the height and width of one arch of the cycloid its rim point traces, and the coordinates of the first arch's crest. Height: #math.equation(block: false, alt: "y equals a open parenthesis 1 minus cos t close parenthesis")[$y = a ( 1 − cos t )$] is largest when #math.equation(block: false, alt: "cos t equals minus 1")[$cos t = − 1$], at #math.equation(block: false, alt: "t equals π")[$t = π$], giving #math.equation(block: false, alt: "y equals 2 a equals 3")[$y = 2 a = 3$]. Width: one arch spans one full revolution, #math.equation(block: false, alt: "t ∈ [ 0 , 2 π ]")[$t ∈ [ 0 , 2 π ]$], and #math.equation(block: false, alt: "x")[$x$] advances by #math.equation(block: false, alt: "a times 2 π equals 3 π approximately equals 9.42")[$a · 2 π = 3 π ≈ 9.42$]. The crest sits at #math.equation(block: false, alt: "t equals π")[$t = π$]: #math.equation(block: false, alt: "x equals a open parenthesis π minus sin π close parenthesis equals 1.5 π approximately equals 4.71")[$x = a ( π − sin π ) = 1.5 π ≈ 4.71$], #math.equation(block: false, alt: "y equals 3")[$y = 3$] — halfway across the arch, at twice the wheel's radius. Dragging the slider to #math.equation(block: false, alt: "a equals 1.5")[$a = 1.5$] in the cycloid figure above lets you check all three numbers against the grid. ]