带分数与分数除法:面积模型互动练习

带分数与分数除法:面积模型互动练习
几何画板及绘图内容加载中,请稍等……
2023-04-12 05:46
① 本范例通过面积模型直观展示带分数与分数的除法运算,用户可交互操作并观察除法过程。② 核心数学概念包括分数除法、带分数与假分数的转换、乘法与除法的互逆关系,以及用面积模型表示部分与整体的关系。③ 作图要点:使用GeoGebra命令如Shuffle、Element、Textfield、TextToUnicode、Denominator、Numerator、FractionText、Sequence、Zip、Flatten、Polygon、Corner等,构建随机分数对、动态旋转与移动的动画,以及输入框和文本显示,实现交互式练习。④ 适合6-8年级学生,用于课堂演示或自主练习,帮助学生理解分数除法的几何意义,并支持西班牙语翻译。

GeoGebra 命令及参数

  1. Shuffle({{1 / 2, 2 / 3}, {1 / 2, 2 / 5}, {1 / 2, 3 / 5}, {1 / 4, 2 / 3}, {1 / 4, 2 / 5}, {1 / 4, 3 / 5}, {3 / 4, 4 / 5}, {3 / 4, 3 / 5}, {1 / 3, 3 / 4}, {1 / 3, 3 / 5}, {1 / 3, 2 / 5}}) → randomFracPairs, {{0.5, 0.4}, {0.25, 0.6}, {0.25, 0.6666666666666666}, {0.3333333333333333, 0.4}, {0.3333333333333333, 0.6}, {0.75, 0.8}, {0.75, 0.6}, {0.5, 0.6}, {0.3333333333333333, 0.75}, {0.25, 0.4}, {0.5, 0.6666666666666666}}
  2. Element(randomFracPairs, Mod[countQuestion, Length[randomFracPairs]] + 1) → currentFracPair
  3. Textfield(input1) → InputBox1
  4. TextToUnicode(("" * InputBox1)) → inputUnicode
  5. Denominator(fracA) → denA
  6. Rotate(Flatten[Sequence[Sequence[AnchorBStart + (A, (-B)), A, 0, boxWidth, divisionWidth], B, 0, boxWidth, divisionHeight]], ((1 - animateRotate) * pi / 2), RotateCenter) → allPointsB
  7. Numerator(fracB) → numerB
  8. RemoveUndefined(Sequence[If[Mod[A, denA + 1] ≠ 0, allPointsB(A)], A, 1, ((denA + 1) * numerB)]) → boxPointsB
  9. Length(boxPointsB) → maxCountB
  10. If(animateControl < 1, animateControl, 1) → animateDivisionsA
  11. Denominator(fracB) → denB
  12. FractionText(numB) → numBLatex
  13. If(animateControl < 4, 0, If[animateControl ≥ 5, 1, animateControl - floor(animateControl)]) → animateMoveB
  14. If(animateControl < 3, 0, animateControl < 3 + maxCountB, floor(animateControl) - 3, maxCountB) → currentCountB
  15. Sequence(AnchorPhase2 + (A * (boxWidth / Denominator[numA], 0)), A, 0, numPiecesBPhase2 - 1) → anchorsPhase2
  16. If(animateControl < 4, 0, If[animateControl ≥ 4 + maxCountB, 1, animateControl - floor(animateControl)]) → animateCountB
  17. If(animateControl < 5 + maxCountB, 0, If[animateControl > 5 + maxCountB + maxCountA, maxCountA, floor(animateControl) - 5 - maxCountB]) → currentCountA
  18. Join({Sequence[AnchorA1 + ((boxWidth / Denominator[numA] * A), 0), A, 0, Denominator[numA] - 1], Sequence[AnchorA2 + ((boxWidth / Denominator[numA] * A), 0), A, 0, Denominator[numA] - 1]}) → basePointsA
  19. Zip(A + (0, boxHeight), A, basePointsA) → topPointsA
  20. Join({Sequence[topPointsA(1) + (0, ((-divisionHeight) * A)), A, 0, denB], Sequence[topPointsA(denA + 1) + (0, ((-divisionHeight) * A)), A, 0, denB]}) → sidePointsA
  21. Flatten(Sequence[Sequence[(x(topPointsA(A)), y(sidePointsA(B))), B, 1, denB], A, 1, Length[basePointsA]]) → allAnchorDivisionsA
  22. Sequence(allPointsB(A), A, denA + 1, Length[allPointsB], denA + 1) → sideRightB
  23. Sequence(allPointsB(A), A, 1, Length[allPointsB], denA + 1) → sideLeftB
  24. Take(allPointsB, 1, denA + 1) → topPointsB
  25. Take(allPointsB, Length[allPointsB] - denA) → basePointsB
  26. Polygon(Zip[PixelsToPoint[Corner[1], Corner[3], Corner[5], A], A, {(pixelsLeft, pixelsTop), (pixelsLeft, y(Corner[5]) - pixelsBottom), Corner[5] - (pixelsRight, pixelsBottom), (x(Corner[5]) - pixelsRight, pixelsTop)}]) → borderBox
  27. Corner(5) → layoutAppSize
  28. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  29. Element({If[layoutX ≟ 16, layoutX - 5, 11], layoutX - 5}, layoutCase) → layoutHintSolnX
  30. cornerBox(topPointsA(1), boxWidth, boxHeight) → wholePartA
  31. cornerBox(topPointsA(denA + 1), (boxWidth * fracA), boxHeight) → fracPartA
  32. Polygon({topPointsB(1), topPointsB(-1), sideRightB(numerB + 1), sideLeftB(numerB + 1)}) → fracPartB
  33. If(animateControl < 1, 0, If[animateControl ≥ 2, 1, animateControl - 1]) → animateDivisionsB
  34. Zip(Segment[A, A + (animateDivisionsA * (boxWidth, 0))], A, sidePointsA) → divisionBarsA
  35. Zip(Segment[A, A + (0, boxWidth)], A, basePointsA) → verticalBarsA
  36. Polygon(cornersB) → frameB
  37. If(animateControl < 5 + maxCountB, 0, If[animateControl ≥ animationLength, 1, animateControl - floor(animateControl)]) → animateCount
  38. Flatten(Sequence[Translate[anchorsPhase2, (0, (((-A) * 2) * divisionHeight))], A, 0, floor(ansVal)]) → allAnchorsPhase2
  39. cornerBox(allAnchorDivisionsA(currentCountA) + (animateCount * (allAnchorsPhase2(currentCountA) - allAnchorDivisionsA(currentCountA))), divisionWidth, divisionHeight) → moveBoxA
  40. Sequence(cornerBox[allAnchorsPhase2(A), divisionWidth, divisionHeight], A, 1, (ceil(currentCountA / denAnswer) * denAnswer)) → displayFrames
  41. cornerBox(allAnchorDivisionsA(currentCountA) + (animateCount * (allAnchorsPhase2(currentCountA) - allAnchorDivisionsA(currentCountA))), divisionWidth, divisionHeight) → moveBoxFrame
  42. Zip(Segment[A, B], A, sideLeftB, B, sideRightB) → divisionBarsB
  43. Zip(Segment[A, A + (animateDivisionsB * (B - A))], A, topPointsB, B, basePointsB) → verticalBarsB
  44. cornerBox(boxPointsB(currentCountB) + (If[currentCountB > denA, animateCountB, 0] * (anchorsPhase2(currentCountB) - boxPointsB(currentCountB))), divisionWidth, divisionHeight) → moveBoxB
  45. Sequence(If[A > currentCountB, boxPointsB(A), If[A < currentCountB, anchorsPhase2(A)]], A, 1, Length[boxPointsB]) → currentLocationsB
  46. Zip(cornerBox[A, divisionWidth, divisionHeight], A, currentLocationsB) → boxesB
  47. If(animateControl < 3, 0, If[animateControl ≥ 4, 1, animateControl - floor(animateControl)]) → animateFadeA
  48. Sequence(If[A > currentCountA, allAnchorDivisionsA(A), If[A < currentCountA, allAnchorsPhase2(A)]], A, 1, maxCountA) → currentLocationsA
  49. Zip(cornerBox[A, divisionWidth, divisionHeight], A, currentLocationsA) → boxesA
  50. cornerBox(boxPointsB(currentCountB) + (animateCountB * (anchorsPhase2(currentCountB) - boxPointsB(currentCountB))), divisionWidth, divisionHeight) → moveBoxBFrame
  51. Text(numBLatex, AnchorB - (1, 0), true, true, 0, 0) → lblBhint
  52. If(animateControl < 3, 0, If[animateControl ≥ 4, 1, animateControl - floor(animateControl)]) → animateFadeB
  53. Text((("" * numALatex) * If[animateDivisionsA ≟ 1, (((("=\dfrac{" * numPiecesA) * "}{") * commonDen) * "}"), ""]), AnchorLabel, true, true, -1, 0) → hintNumA
  54. Text((("" * numBLatex) * If[animateDivisionsB > 0, (((("=\dfrac{" * numPiecesBPhase2) * "}{") * commonDen) * "}"), ""]), AnchorLabel + (0, -6), true, true, -1, 0) → hintNumB
  55. If(animateControl < 4 + maxCountB, 0, If[animateControl ≥ 5 + maxCountB, 1, animateControl - floor(animateControl)]) → animateFadeBoxesB

AI 绘图提示语参考

画一个交互式分数除法面积模型,展示如何用图形方法除以分数和带分数。首先绘制一个矩形代表被除数,然后根据除数分割成若干部分,用动画演示分割和移动的过程,最后显示结果。图形应包含输入框让用户输入分数,动态生成随机分数对,并用不同颜色区分整数部分和分数部分。
以上提示语为根据原始绘图命令整理而来,仅供参考。