用展开图(网)计算金字塔表面积
几何画板及绘图内容加载中,请稍等……
该范例通过“把金字塔展开成展开图(net)”的方式,逐步演示如何计算三角形底面与矩形底面金字塔的总表面积。核心数学概念包括立体几何、曲面展开、底面与侧面的面积求和、以及用几何构造得到各个侧面三角形的边与高。作图与互动要点:先构造金字塔的底面与对应侧面,通过 Net、Pyramid 与 Polygon 生成展开面;使用 Segment、Midpoint 与 Vector/Translate/Angle 辅助确定折痕与面的位置关系;再用 If 与 Shuffle 等逻辑实现不同类型(如矩形底或三角底)的选择与参数切换;最后用 Sum 对各面面积(如 face1~face4、face01/face02 等)进行合计得到表面积,同时用 Text 和 Append 输出计算过程与结果。适合6-8年级立体几何教学,用于面积与展开图的探究活动,也可作为“用网或公式求表面积”的练习/讲评素材。
GeoGebra 命令及参数
Shuffle(Sequence[3, 5]) → heights, {5, 3, 4}Shuffle(Append[Sequence[3, 6], 3]) → Bases1, {3, 4, 6, 3, 5}Shuffle(Sequence[3, 4]) → Bases2, {3, 4}If(countQuestion ≟ 0, 3, Element[Bases1, Mod[countQuestion, Length[Bases1]] + 1]) → Base1If(countQuestion ≟ 0, 3, Element[Bases2, Mod[countQuestion, Length[Bases2]] + 1]) → Base2If(countQuestion ≟ 0, 4, Min[Element[heights, Mod[countQuestion, Length[heights]] + 1], 6 - Base2]) → heightPolygon({(((-Base1)) / 2, ((-Base2)) / 2), (Base1 / 2, ((-Base2)) / 2), (Base1 / 2, Base2 / 2), (((-Base1)) / 2, Base2 / 2)}) → RectBasePyramid(RectBase, (0, 0, height)) → a, face1, face3, face4, face2, edge1, edge2, edge3, edge4Net(a, fold) → net0, V1, face02, face05, face03, face04, Edge1, Edge4, Edge2, Edge3, Edge5, Edge6, V2, Edge7, Edge8, Edge9, Edge10, Edge11, Edge12, V3, V4, V6, V5, V7, V8, face01Segment((Base1 / 2, 0), V5) → h1_{2}Polygon({(((-Base1)) / 2, ((-Base2)) / 2), (Base1 / 2, ((-Base2)) / 2), Element[{(Base1 / 2, Base2 / 2), (0, Base2 / 2), (If[Base1 ≟ 2, 0, -1], Base2 / 2)}, PosVertex]}) → TrianBaseRPolygon((((-Base1)) / 2, ((-Base2)) / 2), (Base1 / 2, ((-Base2)) / 2), 3) → TrianBaseETranslate(Centroid[TrianBaseE], Vector[(0, 0, height)]) → apESegment((0, Base2 / 2), V7) → h2_{1}Segment((((-Base1)) / 2, 0), V8) → h1_{1}Translate((Base1 / 2, Base2 / 2, 0), Vector[(0, 0, height)]) → apRPyramid(If[right, TrianBaseR, TrianBaseE], If[right, apR, apE]) → b, face5, face7, face6, edge7, edge9, edge10Net(b, fold) → net1, W1, facet4, EdgeT1, EdgeT2, EdgeT3, EdgeT7, EdgeT8, EdgeT9, EdgeT4, EdgeT5, EdgeT6, W2, W3, W4, W5, W6, facet1, facet2, facet3Segment(Midpoint[W2, W1], W3) → SegH3Segment(Midpoint[W1, W2], W4) → SegH41Zip(Element[resultsPrism, kk], kk, selectedSurfaces) → resultsPrismOrderedZip(round(nn, 2), nn, resultsPrismOrdered) → resultPrismRoundedMod(countQuestion, 2) → CaseSegment((0, ((-Base2)) / 2), V6) → h2_{2}Translate((Base1 / 2, Base2 / 2, 0), Vector[(1 + (fold * height), 0, 0)]) → V2'Vector(V2' + (0, 0, height / 2), V2') → VecH2Translate((Base1 / 2, Base2 / 2, 0), Vector[(1 + (fold * If[Case ≟ 0, Length[h1_{1}], height]), 0, 0)]) → Vecl2Translate((Base1 / 2, ((-Base2)) / 2, 0), Vector[(1 + (fold * If[Case ≟ 0, Length[h1_{1}], height]), 0, 0)]) → Vecl1Text(((If[Case ≟ 1, "b", "l"] * "=") * Base2), PointLabell, true, true) → labellVector(Corner[labell, 1], Corner[labell, 3]) → labellsizeShuffle(Sequence[1, 3]) → posVerts, {2, 1, 3}Text(Base1, (-1, ((-Base2)) / 2, -0.5 + fold / 2), true, true) → labelBase1foldedAppend("", Sequence["=", ii, 1, expectedSurfaces]) → equalListText(Base2, (Base1 / 2, Base2 / 2, -0.5 + fold / 2), true, true) → labelBase2foldedTranslate((((-Base1)) / 2, ((-Base2)) / 2, 0), Vector[(0, -1 - (fold * (-1 + Base2 / 2 + If[Case ≟ 0, Length[h2_{2}], height])), 0)]) → Vecw2Translate((Base1 / 2, ((-Base2)) / 2, 0), Vector[(0, -1 - (fold * (-1 + Base2 / 2 + If[Case ≟ 0, Length[h2_{2}], height])), 0)]) → Vecw1Segment(Vecw2, Vecw1) → Edge3'Vector(Midpoint[Vecw2, Vecw1], Vecw2) → w1Vector(Midpoint[Vecw1, Vecw2], Vecw1) → w2Text(((If[Case ≟ 1, "a", "w"] * "=") * Base1), (0, 0), true, true) → labelwVector(Corner[labelw, 1], Corner[labelw, 3]) → labelwsizeTranslate(Midpoint[Vecw2, Vecw1], Vector[((-labelwsize)) / 2 - (0, 0, (1 - fold) / 2)]) → posLabelwTranslate(Midpoint[Vecl1, Vecl2], Vector[(0.3, y(labellsize) / 2, 0)]) → posLabellText(labell, posLabell, true, true) → labellposText(("h=" * height), (0, 0), true, true, 0, 0) → labelhVector(Corner[labelh, 1], Corner[labelh, 3]) → labelhsizeText(("\hspace{6}" * labelw), posLabelw, true, true) → labelwposText(text3, (-4.5, Base2 / 2 + height + 4, 0), true, true) → onboardingSegmentsText(text5, (-6, Base2 / 2 + height + 4.2, 0), true, true) → onboardingSurfacesVector(V2' + (0, 0, height / 2), V2' + (0, 0, height)) → VecH1Text(labelh, V2' + (0, 0, height / 2 + y(labelhsize) / 2), true, true) → labelhposVector(Midpoint[Vecl1, Vecl2], Vecl2) → l1Vector(Midpoint[Vecl1, Vecl2], Vecl1) → l2Zip(If[nn ≟ expectedSurfaces + 1 ∧ calculate ≟ expectedSurfaces + 1, "+\;", "\phantom{+\;}"] + (Element[{"\phantom{}", "\textsf{Triangle A}", "\textsf{Triangle B}", "\textsf{Rectangle C}", "\textsf{Triangle D}", "\textsf{Triangle E}", "\textsf{Triangle A}", "\textsf{Triangle B}", "\textsf{Triangle C}", "\textsf{Triangle D}", "\textsf{Triangle A}", "\textsf{Triangle B}", "\textsf{Triangle C}", "\textsf{Triangle D}"}, kk]), kk, selectedSurfaces, nn, Sequence[expectedSurfaces + 1]) → labelsToShowZip(If[nn ≟ expectedSurfaces + 1 ∧ calculate ≟ expectedSurfaces + 1, "+\;", "\phantom{+\;}"] + (Element[formulas, kk]), kk, selectedSurfaces, nn, Sequence[expectedSurfaces + 1]) → formulasToShowZip(nn - floor(nn), nn, resultPrismRounded) → resultsPrismOrderedDecZip(Split[Text[dd], {"."}], dd, resultsPrismOrderedDec) → resultsPrismOrderedDecTextZip(floor(nn), nn, resultsPrismOrdered) → resultsPrismOrderedFloorZip(If[kk ≟ 0, "", Text[kk]], kk, resultsPrismOrderedFloor) → l1_{1}Zip(If[Length[LL] ≥ 2, ("." * Element[LL, 2]), ""], LL, resultsPrismOrderedDecText) → l2_{1}Zip(Length[tt], tt, l2_{1}) → l3Zip(tt + (If[kk ≟ 0, "\phantom{.00}", kk ≟ 2, qq + "\phantom{0}", qq + ""]), kk, l3, tt, l1_{1}, qq, l2_{1}) → l4Midpoint(V2, (x(V5), y(V2), 0)) → Centh1Vector(Centh1, V2) → VecH1_{1}Vector(Centh1, (x(V5), y(V2), 0)) → VecH1_{2}Midpoint(V3, (x(V3), y(V7), 0)) → Centh2Vector(Centh2, V3) → VecH2_{1}Vector(Centh2, (x(V3), y(V7), 0)) → VecH2_{2}Vector(Corner[labelhgreen, 1], Corner[labelhgreen, 3]) → labelhgreensizeVector(Corner[labelhpink, 1], Corner[labelhpink, 3]) → labelhpinksizeText(labelhpink, Centh2 + (0, (1 / 2 * y(labelhpinksize))), true, true) → labelhpinkposText(labelhgreen, Centh1 - labelhgreensize / 2, true, true) → labelgreenposMidpoint(W2 + (1, 0), EPh3) → Centh3Vector(Centh3, Translate[W2, Vector[(1, 0)]]) → VecH3_{2}Vector(Centh4, Translate[W3, Vector[(0, 1)]]) → VecH4_{1}Vector(Centh4, Translate[W5, Vector[(0, 1)]]) → VecH4_{2}Vector(Centh3, EPh3) → VecH3_{1}Midpoint(H5_{1}, H5_{2}) → Centh5Vector(Centh5, H5_{1}) → VecHT_{1}Vector(Centh5, H5_{2}) → VecHT_{2}Vector(Corner[labelhblue, 1], Corner[labelhblue, 3]) → labelhbluesizeText(labelhblue, Centh3 + (0, y(labelhbluesize) / 2), true, true) → labelhblueposVector(Corner[labelhorange, 1], Corner[labelhorange, 3]) → labelhorangesizeText(labelhorange, Centh5 + (0, y(labelhorangesize) / 2), true, true) → labelhorangeposSegment(Midpoint[W3, W2], W5) → SegH42Segment(Midpoint[W3, W1], W6) → SegH43Text(labelh, Centh4 + (((-x(labelhsize)) + 1) / 2, y(labelhsize) + 0.5), true, true) → labelhredposSum(resultPrismRounded) → totalAreaTranslate(W1, Vector[W3, W6]) → W1'Vector(Midpoint[W1', W6], W1') → vecC1Vector(Midpoint[W1', W6], W6) → vecC2Vector(Corner[labelc, 1], Corner[labelc, 3]) → labelcsizeText(labelc, Midpoint[W1', W6] - (x(labelcsize), (-y(labelcsize))), true, true) → labelcposAngle(W1, W2, W3) → αAngle(W1, W3, W6) → βAngle(W2, W3, W5) → γAngle(W1, W2, W4) → δText("C", (-0.5, 0.5), true, true) → labelRect0Text("B", Midpoint[h1_{1}] + (0.3, 1.2), true, true) → labelTriaB0Text("D", Midpoint[h1_{2}] + (-1, 1.2), true, true) → labelTriaD0Text("A", Midpoint[h2_{1}], true, true) → labelTriaA0Text("E", Midpoint[h2_{2}] + (0, 1.3), true, true) → labelTriaE0Text("B", (0, 0), true, true) → label1TriaBText("D", Vertex[SegH41, 1], true, true) → label1TriaDText("A", Midpoint[SegH43], true, true) → label1TriaAText("C", Midpoint[SegH42] - (0.8, 0), true, true) → label1TriaCText(text1, Corner[text8, 1] + (0, 0.5), true, true, 1, -1) → text7Text(text9, Corner[text8, 2] + (0, 0.5), true, true, -1, -1) → text10
AI 绘图提示语参考
绘制一个可展开的棱锥体,展示其表面积计算过程。图形包含一个矩形底面和四个三角形侧面,侧面可沿底边折叠展开成平面网。同时绘制一个三角形底面的棱锥,其底面可为等腰或等边三角形,侧面也可展开。展开后的网中,各面用不同颜色区分,并标注底边长度、斜高和总高度。通过滑动条控制折叠程度,并显示各面面积之和作为总表面积。图形旁附有文字说明,引导观察展开前后面积不变。
以上提示语为根据原始绘图命令整理而来,仅供参考。