#set document(title: "2.1 Space Curves: the Helix", 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.1#h(0.6em)Space Curves: the Helix #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Decompose a space curve into its three coordinate-plane shadows. - Connect each shadow to the pair of component functions that produce it. - Predict which shadows change when a single component function is edited. ] A #strong[vector-valued function] packages three scalar functions into one moving point: #math.equation(block: true, alt: "𝐫 open parenthesis t close parenthesis equals f open parenthesis t close parenthesis 𝐢 plus g open parenthesis t close parenthesis 𝐣 plus h open parenthesis t close parenthesis 𝐤 ,")[$𝐫 ( t ) = f ( t ) 𝐢 + g ( t ) 𝐣 + h ( t ) 𝐤 ,$] and its graph is a space curve. The curve carries no information beyond its components — so the fastest way to understand one is to un-weave it. The tool for that is the curve's #strong[shadows]: its projections onto the three coordinate planes. Each shadow keeps two components and throws the third away, which means each is a plane curve you already know how to read. Our first specimen is the helix #math.equation(block: false, alt: "𝐫 open parenthesis t close parenthesis equals open parenthesis cos t , sin t , t / 4 close parenthesis")[$𝐫 ( t ) = ( cos t , sin t , t / 4 )$]: a point running around a circle while climbing at a steady rate. {"camera":{"fov":50,"position":\[6,4.5,4\],"projection":"perspective","target":\[0,0,1.5\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":10,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":10,"visible":true},"id":"151329a5-fc02-44d9-82e7-4b83c37b65bb","metadata":{"alt\_text":"A thick red helix winding two full turns up around the z-axis, accompanied by three dashed gray curves: a circle lying flat in the xy-plane directly below it, a cosine-shaped wave standing in the xz-plane, and a sine-shaped wave standing in the yz-plane.","created\_at":"2026-07-07T00:00:00.000Z","description":"Workbook scene: the helix r(t)=(cos t, sin t, t/4) for t in \[0, 4pi\] with its three coordinate-plane shadow curves drawn as dashed gray parametric curves.","tags":\["workbook","calc3","space-curves","helix","projections"\],"updated\_at":"2026-07-07T00:00:00.000Z"},"objects":\[{"id":"1aaf3a52-686a-49fd-843b-5396406b370d","kind":"parametric-curve","label":{"text":"r(t) = (cos t, sin t, t/4)","visible":true},"samples":400,"style":{"color":"\#ef4444","dash":\[\],"lineWidth":4},"tDomain":\[0,12.566370614359172\],"visible":true,"xExpr":"cos(t)","yExpr":"sin(t)","zExpr":"t/4"},{"id":"26f53c82-825c-48f4-bad2-8c43552dfdc7","kind":"parametric-curve","label":{"text":"xy-plane shadow","visible":true},"samples":400,"style":{"color":"\#9ca3af","dash":\[5,5\],"lineWidth":2},"tDomain":\[0,12.566370614359172\],"visible":true,"xExpr":"cos(t)","yExpr":"sin(t)","zExpr":"0"},{"id":"6767eb70-e142-4b60-8978-57bebe66610a","kind":"parametric-curve","label":{"text":"xz-plane shadow","visible":true},"samples":400,"style":{"color":"\#9ca3af","dash":\[5,5\],"lineWidth":2},"tDomain":\[0,12.566370614359172\],"visible":true,"xExpr":"cos(t)","yExpr":"0","zExpr":"t/4"},{"id":"0c8cfae6-16d4-481d-85b2-e0a55f332bf4","kind":"parametric-curve","label":{"text":"yz-plane shadow","visible":true},"samples":400,"style":{"color":"\#9ca3af","dash":\[5,5\],"lineWidth":2},"tDomain":\[0,12.566370614359172\],"visible":true,"xExpr":"0","yExpr":"sin(t)","zExpr":"t/4"}\],"title":"Helix and its coordinate-plane shadows","version":1} A red helix climbing two turns around the #math.equation(block: false, alt: "z")[$z$]-axis, with its three shadows drawn dashed: a circle in the #math.equation(block: false, alt: "x y")[$x y$]-plane, a cosine wave standing in the #math.equation(block: false, alt: "x z")[$x z$]-plane, and a sine wave in the #math.equation(block: false, alt: "y z")[$y z$]-plane. The opening camera is chosen so the helix appears to cross itself. === Explore + Before orbiting: where the red curve appears to cross itself on screen, decide which strand is in front. Commit. Then orbit a quarter turn — were you right? Why can a single flat view of a space curve always fool you this way? + Match each dashed shadow to its coordinate plane and to the pair of component functions that build it. Which component does each shadow discard? + Orbit to look straight down the #math.equation(block: false, alt: "z")[$z$]-axis. Which shadow does the helix appear to #emph[become], and what information does this view destroy? + Predict: if the third component #math.equation(block: false, alt: "t / 4")[$t / 4$] were changed to #math.equation(block: false, alt: "t squared / 16")[$t^(2) / 16$], which shadows would change and which would stay exactly the same? Test your prediction by editing the component in the activated figure, then undo. + Predict again for changing #math.equation(block: false, alt: "cos t")[$cos t$] to #math.equation(block: false, alt: "cos 2 t")[$cos 2 t$]: which shadow is untouched this time? The #math.equation(block: false, alt: "x y")[$x y$]-shadow stops being a circle — what shape does it collapse into? === Shadows are components, two at a time Project the helix onto the #math.equation(block: false, alt: "x y")[$x y$]-plane and you get #math.equation(block: false, alt: "open parenthesis cos t , sin t , 0 close parenthesis")[$( cos t , sin t , 0 )$] — the pair #math.equation(block: false, alt: "open parenthesis f , g close parenthesis")[$( f , g )$] with #math.equation(block: false, alt: "h")[$h$] set to zero. The other two shadows are #math.equation(block: false, alt: "open parenthesis cos t , 0 , t / 4 close parenthesis")[$( cos t , 0 , t / 4 )$] and #math.equation(block: false, alt: "open parenthesis 0 , sin t , t / 4 close parenthesis")[$( 0 , sin t , t / 4 )$]. That is the general rule: #emph[the shadow on a coordinate plane is the curve with the discarded component replaced by zero]. It explains everything you tested above. Editing #math.equation(block: false, alt: "h")[$h$] alone cannot touch the #math.equation(block: false, alt: "x y")[$x y$]-shadow, because that shadow never knew about #math.equation(block: false, alt: "h")[$h$]; it must change both vertical shadows, because each of them keeps #math.equation(block: false, alt: "h")[$h$]. Every edit changes exactly the two shadows that use the edited component. Read as graphs, the vertical shadows are old friends. In the #math.equation(block: false, alt: "x z")[$x z$]-plane the shadow satisfies #math.equation(block: false, alt: "x equals cos open parenthesis 4 z close parenthesis")[$x = cos ( 4 z )$] — a cosine wave lying on its side, since #math.equation(block: false, alt: "t equals 4 z")[$t = 4 z$] — and the #math.equation(block: false, alt: "y z")[$y z$]-shadow is the matching sine wave. The helix is a circle and two sinusoids in a trench coat, and the shadows catch it. #examplebox("Example 1")[A shadow after surgery][ Suppose the helix's first component is edited from #math.equation(block: false, alt: "cos t")[$cos t$] to #math.equation(block: false, alt: "cos 2 t")[$cos 2 t$], giving #math.equation(block: false, alt: "𝐫 open parenthesis t close parenthesis equals open parenthesis cos 2 t , sin t , t / 4 close parenthesis")[$𝐫 ( t ) = ( cos 2 t , sin t , t / 4 )$]. Find an #math.equation(block: false, alt: "x y")[$x y$]-equation for the new shadow in the #math.equation(block: false, alt: "x y")[$x y$]-plane. The new shadow is #math.equation(block: false, alt: "open parenthesis cos 2 t , sin t , 0 close parenthesis")[$( cos 2 t , sin t , 0 )$], so #math.equation(block: false, alt: "x equals cos 2 t")[$x = cos 2 t$] and #math.equation(block: false, alt: "y equals sin t")[$y = sin t$]. The double-angle identity #math.equation(block: false, alt: "cos 2 t equals 1 minus 2 sin squared t")[$cos 2 t = 1 − 2 sin^(2) t$] eliminates the parameter at once: #math.equation(block: true, alt: "x equals 1 minus 2 y squared .")[$x = 1 − 2 y^(2) .$] The circle has collapsed into a parabolic arc opening in the negative #math.equation(block: false, alt: "x")[$x$]-direction, traced back and forth as #math.equation(block: false, alt: "t")[$t$] runs — a simple Lissajous figure. The #math.equation(block: false, alt: "y z")[$y z$]-shadow, which never used the first component, is exactly the sine wave it was before the edit. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ When a space curve confuses you, do not stare harder at the curve. Read its components, and let each shadow show you two of them at a time. ]