#set document(title: "1.3 Quadric Surfaces and Their Traces", 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")) == 1.3#h(0.6em)Quadric Surfaces and Their Traces #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ #emph[Objectives] - Identify a quadric surface from its horizontal and vertical traces. - Drive a movable slicing plane through a hyperbolic paraboloid and explain the trace family's flip through the degenerate level. - Predict the traces of a hyperboloid of one sheet before seeing them. ] Quadric surfaces are the graphs of second-degree equations in #math.equation(block: false, alt: "x")[$x$], #math.equation(block: false, alt: "y")[$y$], and #math.equation(block: false, alt: "z")[$z$] — the three-dimensional relatives of ellipses, parabolas, and hyperbolas. There are only a handful of shapes, but memorizing pictures of them is fragile knowledge. The durable skill is #strong[slicing]: intersect the surface with a plane on which one variable is constant and identify the resulting curve, called a #strong[trace]. Fix #math.equation(block: false, alt: "z equals c")[$z = c$] and you get horizontal traces; fix #math.equation(block: false, alt: "x")[$x$] or #math.equation(block: false, alt: "y")[$y$] and you get vertical ones. The traces are ordinary conics, and the way the family changes as #math.equation(block: false, alt: "c")[$c$] varies is the surface's fingerprint. Our specimen is the #strong[hyperbolic paraboloid] #math.equation(block: true, alt: "z equals the fraction x squared over 4 minus the fraction y squared over 9 ,")[$z = frac(x^(2), 4) − frac(y^(2), 9) ,$] the saddle. In the figure below it comes with a movable slicing plane: a sheet of level curves whose height you can drag, so the whole trace family plays like a film. {"camera":{"fov":50,"position":\[6,4.5,4\],"projection":"perspective","target":\[0,0,0\]},"grid":{"axisColors":{"x":"\#ef4444","y":"\#22c55e","z":"\#3b82f6"},"divisions":10,"gridColor":"\#e5e7eb","showAxes":true,"showLabels":true,"size":10,"visible":true},"id":"5040ee9b-888f-46d9-9fd7-524f9f575df6","metadata":{"alt\_text":"A translucent saddle-shaped surface (hyperbolic paraboloid z = x squared over 4 minus y squared over 9) with a horizontal plane of 15 dark level curves passing through it at z = 0: two families of hyperbolas separated by a pair of straight lines crossing at the origin. A hidden wireframe hyperboloid of one sheet waits to be revealed as a second quadric.","created\_at":"2026-07-07T00:00:00.000Z","description":"Workbook scene: hyperbolic paraboloid z = x^2/4 - y^2/9 with a 15-level contour plot of the same function acting as a draggable trace plane at z = 0, plus a hidden parametric hyperboloid of one sheet for the generalize step.","tags":\["workbook","calc3-vectors-lines-quadrics","quadric","saddle","traces","contours"\],"updated\_at":"2026-07-07T00:00:00.000Z"},"objects":\[{"expression":"x^2/4 - y^2/9","id":"10afca53-8327-46f0-bdb8-ec59d2bd3b5d","kind":"explicit-surface","label":{"text":"z = x^2/4 - y^2/9","visible":true},"resolution":128,"style":{"colormap":"viridis","doubleSided":true,"opacity":0.55,"wireframe":false,"wireframeColor":"\#000000"},"visible":true,"xDomain":\[-3,3\],"yDomain":\[-3,3\]},{"expression":"x^2/4 - y^2/9","id":"a9bfcb10-1f1e-4438-bf2f-3882563e040a","kind":"contour-plot","label":{"text":"trace plane (drag the z-offset)","visible":true},"levels":15,"style":{"color":"\#111827","dash":\[\],"lineWidth":2},"visible":true,"xDomain":\[-3,3\],"yDomain":\[-3,3\],"zOffset":0},{"id":"15988362-7c39-43c6-843e-307f396d7253","kind":"parametric-surface","label":{"text":"mystery quadric","visible":true},"resolution":64,"style":{"colormap":"plasma","doubleSided":true,"opacity":0.6,"wireframe":true,"wireframeColor":"\#334155"},"uDomain":\[-1.5,1.5\],"vDomain":\[0,6.283185307179586\],"visible":false,"xExpr":"cosh(u)\*cos(v)","yExpr":"cosh(u)\*sin(v)","zExpr":"sinh(u)"}\],"title":"One Saddle, Every Trace","version":1} The saddle #math.equation(block: false, alt: "z equals x squared / 4 minus y squared / 9")[$z = x^(2) / 4 − y^(2) / 9$] with a draggable plane of level curves, opening at height #math.equation(block: false, alt: "z equals 0")[$z = 0$]. A second surface hides in the object list — leave it hidden until the last exploration step. === Explore + Orbit to look straight down the #math.equation(block: false, alt: "z")[$z$]-axis so the level curves read as a flat map. You should see two families of curved lines and, separating them, something not curved at all. Which family occupies the east–west sectors, and which the north–south? + Predict the shape of the trace at #math.equation(block: false, alt: "z equals 1")[$z = 1$] and at #math.equation(block: false, alt: "z equals minus 1")[$z = − 1$]: circle, ellipse, parabola, hyperbola, or lines? Which way does each open? + Select the slicing plane and drag its height slowly from 0 up toward 1, then down through 0 to #math.equation(block: false, alt: "minus 1")[$− 1$]. Watch the cut flip from one hyperbola family to the other. At exactly which height is the cut not a hyperbola at all? + Vertical traces next: predict what the planes #math.equation(block: false, alt: "y equals 0")[$y = 0$] and #math.equation(block: false, alt: "x equals 0")[$x = 0$] cut from the saddle, then orbit to look straight down the #math.equation(block: false, alt: "y")[$y$]-axis and the #math.equation(block: false, alt: "x")[$x$]-axis and read each answer off the surface's silhouette. Why does one parabola open up and the other down? + Reveal the hidden wireframe surface. Its components involve #math.equation(block: false, alt: "cosh")[$cosh$] and #math.equation(block: false, alt: "sinh")[$sinh$], and the identity #math.equation(block: false, alt: "cosh squared u minus sinh squared u equals 1")[$cosh^(2) u − sinh^(2) u = 1$] is the key. Predict its horizontal traces before orbiting, then check: at every height the cross-section is a circle, smallest at the waist. What is this surface called? === Reading the algebra of a slice Setting #math.equation(block: false, alt: "z equals c")[$z = c$] in the saddle's equation gives #math.equation(block: false, alt: "x squared / 4 minus y squared / 9 equals c")[$x^(2) / 4 − y^(2) / 9 = c$]. For #math.equation(block: false, alt: "c greater than 0")[$c > 0$] this is a hyperbola opening along the #math.equation(block: false, alt: "x")[$x$]-direction; for #math.equation(block: false, alt: "c less than 0")[$c < 0$], dividing by #math.equation(block: false, alt: "c")[$c$] flips the roles and the hyperbolas open along #math.equation(block: false, alt: "y")[$y$]. The flip you drove through in the figure above happens at #math.equation(block: false, alt: "c equals 0")[$c = 0$], where the equation factors: #math.equation(block: true, alt: "the fraction x squared over 4 minus the fraction y squared over 9 equals 0 ⟺ open parenthesis the fraction x over 2 minus the fraction y over 3 close parenthesis open parenthesis the fraction x over 2 plus the fraction y over 3 close parenthesis equals 0 ,")[$frac(x^(2), 4) − frac(y^(2), 9) = 0 #h(1em) ⟺ #h(1em) ( frac(x, 2) − frac(y, 3) ) ( frac(x, 2) + frac(y, 3) ) = 0 ,$] a degenerate pair of crossing lines #math.equation(block: false, alt: "y equals ± the fraction 3 over 2 x")[$y = ± frac(3, 2) x$]. The vertical traces explain the name: #math.equation(block: false, alt: "y equals 0")[$y = 0$] gives the upward parabola #math.equation(block: false, alt: "z equals x squared / 4")[$z = x^(2) / 4$], and #math.equation(block: false, alt: "x equals 0")[$x = 0$] gives the downward parabola #math.equation(block: false, alt: "z equals minus y squared / 9")[$z = − y^(2) / 9$]. Two parabolas of opposite temperament through one point — that is what a saddle #emph[is]. #examplebox("Example 1")[Classifying a mystery quadric by traces][ A surface satisfies #math.equation(block: false, alt: "x squared plus y squared minus z squared equals 1")[$x^(2) + y^(2) − z^(2) = 1$]. Describe its horizontal traces and its trace in the plane #math.equation(block: false, alt: "x equals 0")[$x = 0$], and name the surface. Fix #math.equation(block: false, alt: "z equals c")[$z = c$]: then #math.equation(block: false, alt: "x squared plus y squared equals 1 plus c squared")[$x^(2) + y^(2) = 1 + c^(2)$], a circle of radius #math.equation(block: false, alt: "the square root of 1 plus c squared")[$sqrt(1 + c^(2))$] at every height — never empty, smallest at #math.equation(block: false, alt: "c equals 0")[$c = 0$], growing as #math.equation(block: false, alt: "| c |")[$| c |$] increases. Fix #math.equation(block: false, alt: "x equals 0")[$x = 0$]: then #math.equation(block: false, alt: "y squared minus z squared equals 1")[$y^(2) − z^(2) = 1$], a hyperbola opening along the #math.equation(block: false, alt: "y")[$y$]-direction. Circular horizontal traces with a waist plus hyperbolic vertical traces identify a #strong[hyperboloid of one sheet] — the hidden wireframe in the figure above, which the parametrization #math.equation(block: false, alt: "x equals cosh u cos v")[$x = cosh u cos v$], #math.equation(block: false, alt: "y equals cosh u sin v")[$y = cosh u sin v$], #math.equation(block: false, alt: "z equals sinh u")[$z = sinh u$] builds directly from the identity #math.equation(block: false, alt: "cosh squared u minus sinh squared u equals 1")[$cosh^(2) u − sinh^(2) u = 1$]. ] #notebox("Note", rgb("#8a94a6"), rgb("#556666"), rgb("#f7f8fa"))[ One method, every quadric: freeze a variable, name the conic, and watch the family. If you can narrate the traces, you have understood the surface — no memorized gallery required. ]