Moving Plane Intersections with Surface z=f(x,y)

Moving Plane Intersections with Surface z=f(x,y)
Loading the math board and drawing, please wait…
2016-04-26 21:02
This example demonstrates how the intersection curve of a 3D surface z=f(x,y) changes when a plane moves through the surface. It covers multivariable functions, spatial surfaces, plane-surface intersections, cross-section curves, level curves, sampling, and parametric visualization. The construction uses Function to define f, ImplicitCurve, IntersectPath, and PointIn to generate or filter intersection paths and points, and If, Point, Segment, PolyLine, Polygon, Zip, Sequence, Sum, Length, RemoveUndefined, and Append to organize conditions, sample points, paths, and polygonal outlines. Objects such as z0, z_min, z_max, z_Step, N_P, N_C, x_min, x_max, y_min, y_max, Pxy, P1xxy, P2yyx, B01, B02, a, b, c, d, e, and y0 control domain bounds, step size, point counts, and plane position, while Textfield, inputBox2, inputBox3, button1, button2, button5, v_1, text1, and text2 provide interactive input and animation controls. It is suitable for advanced high-school mathematics, university multivariable calculus, analytic geometry, and GeoGebra 3D modeling demonstrations.

GeoGebra Commands & Parameters

  1. If(Length[RemoveUndefined[Join[Zip[Mirror[{Roots[f0(a, x), y_{min}, y_{max}]}, y = x] + (a, 0), a, Sequence[x_{min} + ((x_{max} - x_{min}) / N_P * i), i, 0, N_P]]]]] ≟ 0, false, true) → lb1
  2. If(lb1, RemoveUndefined[Join[Zip[Mirror[{Roots[f0(a, x), y_{min}, y_{max}]}, y = x] + (a, 0), a, Sequence[x_{min} + ((x_{max} - x_{min}) / N_P * i), i, 0, N_P]]]], Sequence[(10000, 10000), k, 1, 50]) → P1xxy
  3. If(lb1, RemoveUndefined[Join[Zip[Reverse[{Roots[f0(x, a), x_{min}, x_{max}]}] + (0, a), a, Sequence[y_{min} + ((y_{max} - y_{min}) / N_P * i), i, 0, N_P]]]], Sequence[(10000, 10000), k, 1, 50]) → P2yyx
  4. Polygon((x_{min}, y_{min}), (x_{max}, y_{min}), (x_{max}, y_{max}), (x_{min}, y_{max})) → poly1, b, c, d, e
  5. PointIn(poly1) → PTest
  6. Zip((x(a), y(a), z0), a, Join[{P1xxy, P2yyx}]) → list1
  7. Segment(B02, B01) → a
  8. Textfield(v_1) → inputBox2
  9. Textfield(f) → inputBox3
  10. Textfield(x_{min}) → inputBox4
  11. Textfield(x_{max}) → inputBox5
  12. Textfield(y_{max}) → inputBox6
  13. Textfield(z_{max}) → inputBox7
  14. Textfield(y_{min}) → inputBox8
  15. Textfield(z_{min}) → inputBox9
  16. Point(a, 1 - zzii_B) → A
  17. Textfield(N_P) → inputBox10
  18. Sum(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, 1, 0], i, 1, n]) → ext1
  19. Length(list1) → Lä
  20. Textfield(step) → inputBox12
  21. Textfield(zoom_{3D}) → InputBox1
  22. Sequence((x(Element[lr01, i]), y(Element[lr01, i]), f(x(Element[lr01, i]), y(Element[lr01, i]))), i, 1, n) → lr013
  23. Sequence((x(Element[lr02, i]), y(Element[lr02, i]), f(x(Element[lr02, i]), y(Element[lr02, i]))), i, 1, n) → lr023
  24. RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, NaN], i, 1, n]) → lr04
  25. Zip(Vector[b, a], a, Sequence[Element[lr01, Element[lr04, i]], i, 1, Length[lr04]], b, Sequence[Element[lr02, Element[lr04, i]], i, 1, Length[lr04]]) → lr06
  26. Zip(Vector[b, a], a, Sequence[Element[lr013, Element[lr04, i]], i, 1, Length[lr04]], b, Sequence[Element[lr023, Element[lr04, i]], i, 1, Length[lr04]]) → lr063
  27. Zip(Vector[a, b], a, Sequence[Element[lr01, Element[lr05, i]], i, 1, Length[lr05]], b, Sequence[Element[lr02, Element[lr05, i]], i, 1, Length[lr05]]) → lr07
  28. Zip(Vector[a, b], a, Sequence[Element[lr013, Element[lr05, i]], i, 1, Length[lr05]], b, Sequence[Element[lr023, Element[lr05, i]], i, 1, Length[lr05]]) → lr073
  29. RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, (-i)], i, 1, n]) → lr04c
  30. Append(lr04c, Element[lr04c, 1]) → lr04cc
  31. Sum(Sequence[If[(Element[lr04cc, i] * Element[lr04cc, i + 1]) < 0, 1, 0], i, 1, n + 1]) → lr04ccc
  32. If(ext1 ≟ n, "Max", If[ext1 ≟ 0, "Min", If[(lr04ccc > 2) ∧ (lr04ccc ≤ 4), "saddle ? ", "?"]]) → TT1
  33. PolyLine({(0, 0.5019607843), (0.1, 0.4980392157), (0.2, 0), (0.3, 0), (0.4, 0.2), (0.5, 0.2), (0.7, 1), (1, 1)}) → Ro
  34. PolyLine({(0, 0), (0.2, 0), (0.3, 0.6), (0.4, 1), (0.7, 1), (0.9, 0.2), (1, 0)}) → Gr
  35. PolyLine({(0, 0.5019607843), (0.1, 1), (0.3, 1), (0.4, 0.8), (0.5, 0), (0.6, 0), (0.7, 0.4), (0.8, 0.2), (0.9, 0.4), (1, 0)}) → Bl
  36. Function(f(a, b), a, x_{min} - 0.2, x_{max} + 0.2, b, y_{min} - 0.2, y_{max} + 0.2) → g
  37. Point(Pxy) → D
  38. Textfield(z0) → InputBox2
  39. ImplicitCurve(g(x, y) - z0) → p
  40. IntersectPath(o, g(x, y)) → s

AI Drawing Prompt Reference

Visualize a 3D surface defined by the function z=f(x,y) and show how the intersection curve changes as a plane moves through the surface. The plot should include the 3D view of the surface, the path of the moving plane, and the intersection curve, allowing users to manipulate the function, surface bounds, and plane position using sliders and input fields to explore multivariable functions, spatial surfaces, and plane-surface intersections.
The prompt above was compiled from the original drawing commands and is for reference only.