旋转曲面 by Mark Dabbs
几何画板及绘图内容加载中,请稍等……
①本范例演示了如何通过旋转曲线生成旋转曲面,并可视化其体积和切线;②涉及的核心数学概念包括旋转曲面、体积计算、切线方程、几何变换、逻辑推理以及微积分中的导数和积分;③作图要点——从下方『构造摘要』提炼用到了 Line(直线)、OrthogonalLine(垂线)、Slope(斜率)、Textfield(文本框)、Sequence(数列);对象包括 F(函数曲线)、C(旋转中心)、B(旋转点)、A(切点)、D(切线)、E(辅助点)、h(高度)、g(角度)、i(参数)、Pts(点集)、hB(高度点)、GradAB(斜率向量)、RotateSurface(旋转曲面)、InputBox1(输入框)、gradAnAnp1(梯度向量)、negCones(负锥体)、posCones(正锥体)、axisPts(轴点)、circles(圆)、rotSegs(旋转段)、cylinders(圆柱)、a(参数)、text1(文本)、SegAnAnp1(线段);④适合高中及以上学生学习微积分、立体几何以及几何变换,也可用于教学演示。
GeoGebra 命令及参数
Line(B, A) → gOrthogonalLine(A, xAxis) → iSlope(Line[A, B]) → GradABTextfield(Pts) → InputBox1Sequence(Slope[Line[Element[Pts, k], Element[Pts, k + 1]]], k, 1, Length[Pts] - 1) → gradAnAnp1Sequence(Surface[r + x(Element[Pts, k]) - y(Element[Pts, k]) / Element[gradAnAnp1, k], ((Element[gradAnAnp1, k] * r) * cos(u)), ((Element[gradAnAnp1, k] * r) * sin(u)), r, If[x(Element[Pts, k]) ≤ x(Element[Pts, k + 1]), y(Element[Pts, k]) / Element[gradAnAnp1, k], y(Element[Pts, k + 1]) / Element[gradAnAnp1, k]], If[x(Element[Pts, k]) ≤ x(Element[Pts, k + 1]), y(Element[Pts, k]) / Element[gradAnAnp1, k], y(Element[Pts, k]) / Element[gradAnAnp1, k]], u, 0, ((2 * π / 360) * RotateSurface)], k, 1, Length[Pts] - 1) → negConesSequence(Surface[r + x(Element[Pts, k]) - y(Element[Pts, k]) / Element[gradAnAnp1, k], ((Element[gradAnAnp1, k] * r) * cos(u)), ((Element[gradAnAnp1, k] * r) * sin(u)), r, y(Element[Pts, k]) / Element[gradAnAnp1, k], y(Element[Pts, k + 1]) / Element[gradAnAnp1, k], u, 0, ((2 * π / 360) * RotateSurface)], k, 1, Length[Pts] - 1) → posConesSequence((x(Element[Pts, k]), 0), k, 1, Length[Pts]) → axisPtsSequence(CurveCartesian[x(Element[Pts, k]), (y(Element[Pts, k]) * cos(t°)), (y(Element[Pts, k]) * sin(t°)), t, 0, RotateSurface], k, 1, Length[Pts]) → circlesSequence(Segment[Rotate[Element[Pts, k], RotateSurface°, xAxis], Rotate[Element[Pts, k + 1], RotateSurface°, xAxis]], k, 1, Length[Pts] - 1) → rotSegsSequence(If[y(Element[Pts, k]) ≟ y(Element[Pts, k + 1]), Surface[r, (y(Element[Pts, k]) * cos(u)), (y(Element[Pts, k]) * sin(u)), r, x(Element[Pts, k]), x(Element[Pts, k + 1]), u, 0, ((2 * π / 360) * RotateSurface)]], k, 1, Length[Pts] - 1) → cylindersSequence(Segment[Element[Pts, k], Element[Pts, k + 1]], k, 1, Length[Pts] - 1) → SegAnAnp1