曲面与移动平面交线演示
几何画板及绘图内容加载中,请稍等……
①本范例演示曲面与可移动平面交线的动态变化过程;②涉及的核心数学概念包括三维向量、函数图像、对数函数、多边形构造、几何变换等;③作图要点运用了Function, If, Polygon, PointIn, Segment, Textfield, Point, Sum, Length, Sequence, RemoveUndefined, Zip, Append, PolyLine, ImplicitCurve, IntersectPath等GeoGebra命令与对象;④适合高中及以上学生及数学爱好者用于理解空间几何与函数图像的交互。
GeoGebra 命令及参数
Function(f(a, b), a, x_{min} - 0.2, x_{max} + 0.2, b, y_{min} - 0.2, y_{max} + 0.2) → gIf(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) → lb1If(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]) → P1xxyIf(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]) → P2yyxPolygon((x_{min}, y_{min}), (x_{max}, y_{min}), (x_{max}, y_{max}), (x_{min}, y_{max})) → poly1, b, c, d, ePointIn(poly1) → PTestSegment(B02, B01) → aTextfield(v_1) → inputBox2Textfield(f) → inputBox3Textfield(x_{min}) → inputBox4Textfield(x_{max}) → inputBox5Textfield(y_{max}) → inputBox6Textfield(z_{max}) → inputBox7Textfield(y_{min}) → inputBox8Textfield(z_{min}) → inputBox9Point(a, 1 - zzii_B) → ATextfield(N_P) → inputBox10Sum(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, 1, 0], i, 1, n]) → ext1Length(list1) → LäTextfield(step) → inputBox12Textfield(zoom_{3D}) → InputBox1Sequence((x(Element[lr01, i]), y(Element[lr01, i]), f(x(Element[lr01, i]), y(Element[lr01, i]))), i, 1, n) → lr013Sequence((x(Element[lr02, i]), y(Element[lr02, i]), f(x(Element[lr02, i]), y(Element[lr02, i]))), i, 1, n) → lr023RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, NaN], i, 1, n]) → lr04Zip(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]]) → lr06Zip(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]]) → lr063Zip(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]]) → lr07Zip(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]]) → lr073RemoveUndefined(Sequence[If[f(x(PTest), y(PTest)) - f(x(Element[lr01, i]), y(Element[lr01, i])) > 0, i, (-i)], i, 1, n]) → lr04cAppend(lr04c, Element[lr04c, 1]) → lr04ccSum(Sequence[If[(Element[lr04cc, i] * Element[lr04cc, i + 1]) < 0, 1, 0], i, 1, n + 1]) → lr04cccIf(ext1 ≟ n, "Max", If[ext1 ≟ 0, "Min", If[(lr04ccc > 2) ∧ (lr04ccc ≤ 4), "saddle ? ", "?"]]) → TT1PolyLine({(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)}) → RoPolyLine({(0, 0), (0.2, 0), (0.3, 0.6), (0.4, 1), (0.7, 1), (0.9, 0.2), (1, 0)}) → GrPolyLine({(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)}) → BlPoint(Pxy) → DTextfield(z0) → InputBox2ImplicitCurve(g(x, y) - z0) → pIntersectPath(o, g(x, y)) → s