除法可视化

除法可视化
几何画板及绘图内容加载中,请稍等……
2018-09-23 23:26
这个范例通过等边三角形的动态演示,展示了除法的概念。它涉及整数除法,并通过移动三角形来模拟除法过程。构造摘要中提到了使用了Zip, Take, If, Textfield, Text等GeoGebra命令。适合小学高年级或初中学生学习除法和整数除法的概念。

GeoGebra 命令及参数

  1. First(Flatten[Sequence[Sequence[Point[{(rightSpacer * i), (rightSpacer * j) - rightSpacer / 2}], i, 1, ceil(numberOfGroups^(0.5)), 1], j, 1, ceil(numberOfGroups^(0.5)), 1]], numberOfGroups) → rightGroupCenters
  2. Zip(Sequence[AAA + (((i * 2) * withinGroupsSpacer), 0), i, ((-(rightColumnsNeed - 1))) / 2, (rightColumnsNeed - 1) / 2, 1], AAA, rightGroupCenters) → rightAnchors
  3. Zip(Flatten[Sequence[AAA + (0, (withinGroupsSpacer * i)), i, -4.5, 4.5, 1]], AAA, Zip[First[BBB, Div[groupSize, 10]], BBB, rightAnchors]) → rightTens
  4. Zip(Flatten[First[Join[Sequence[AAA + (0, (withinGroupsSpacer * i)), i, 4.5, -4.5, -2]], Mod[groupSize, 10]]], AAA, Zip[Last[BBB, rightColumnsNeed - Div[groupSize, 10]], BBB, rightAnchors]) → rightOnes
  5. Take(Zip[Flatten[Join[{AAA, BBB}]], AAA, rightTens, BBB, rightOnes], movedGroups - moverSize + 1, movedGroups) → newRight
  6. First(Flatten[Sequence[Sequence[Point[{(leftSpacer * i), (leftSpacer * j)}], i, -1, (-ceil(total^(0.5))), -1], j, 1, ceil(total^(0.5)), 1]], total) → totalLeftDots
  7. If(¬movingOnes, {(1, 0), (2, 0)}, Flatten[If[movingSize ≟ 1, Zip[Element[AAA, movedOnes], AAA, rightOnes], Sequence[Sequence[Element[rightTens, i, j], j, movedTens, (10 * Div[groupSize, 10]), Div[groupSize, 10]], i, 1, numberOfGroups]]]) → altDestinations
  8. If(¬movingOnes, {(1, 0), (2, 0)}, Take[totalLeftDots, total + 1 + ((0 - totalMoved) * numberOfGroups), total + ((movingSize - totalMoved) * numberOfGroups)]) → altOldLeftDots
  9. Take(totalLeftDots, total - (movedGroups * groupSize) + 1, total - ((movedGroups - moverSize) * groupSize)) → oldLeft
  10. Textfield(totalText) → InputBox1
  11. Textfield(groupSizeText) → InputBox2
  12. Textfield(numberOfGroupsText) → InputBox3
  13. If(movingGroups, First[totalLeftDots, total - (movedGroups * groupSize)], First[totalLeftDots, total - (numberOfGroups * ((10 * movedTens) + movedOnes))]) → currentLeftDots
  14. First(Zip[Polygon[AAA + ((-0.45 * rightSpacer), (-0.45 * rightSpacer)), AAA + ((0.45 * rightSpacer), (-0.45 * rightSpacer)), 4], AAA, rightGroupCenters], movedGroups) → groupSquares
  15. Zip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, currentLeftDots) → remainingLeftSquares
  16. Zip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, Remove[totalLeftDots, currentLeftDots]) → leftBehind
  17. If(movingOnes, Join[{Sequence[Sequence[Element[rightOnes, i, j], j, 1, movedOnes - (movingSize ≟ 1)], i, 1, numberOfGroups], Sequence[Sequence[Sequence[Element[rightTens, i, j], j, k, (10 * Div[groupSize, 10]), Div[groupSize, 10]], k, 1, movedTens - (movingSize ≟ 10)], i, 1, numberOfGroups]}], {(1, 0), (2, 0)}) → movedRight
  18. If(Defined[total] ∧ Defined[numberOfGroups], (1.1 * Max[ceil(total^(0.5)) + rightSpacer, (ceil(numberOfGroups)^(0.5) * rightSpacer) + rightSpacer]), 10) → zoomer
  19. Text(Length[remainingLeftSquares], (((-zoomer)) / 2, ((-zoomer)) / 20)) → text1
  20. If(movingGroups, Zip[(AAA * (1 - mover)) + (BBB * mover), AAA, Flatten[oldLeft], BBB, Flatten[newRight]], If[movingOnes, Zip[(AAA * (1 - otherMover)) + (BBB * otherMover), AAA, altOldLeftDots, BBB, altDestinations], {(1, 0), (2, 0)}]) → movingDots
  21. Zip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, movingDots) → movingSquares
  22. If(movedGroups > 0, Flatten[Take[Zip[Flatten[Join[{AAA, BBB}]], AAA, rightTens, BBB, rightOnes], 1, movedGroups - moverSize]], {(1, 0), (2, 0)}) → oldRight
  23. Zip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, oldRight) → oldRightSquares
  24. Length(Flatten[oldLeft]) → a
  25. Length(Flatten[newRight]) → b
  26. Zip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, Flatten[movedRight]) → altMovedRightSquares
  27. Text(movedGroups + " x " + groupSize + " = " + ((movedGroups * groupSize)), (zoomer / 2, ((-zoomer)) / 20)) → text2
  28. Text(numberOfGroups + " x " + (movedOnes + (10 * movedTens)) + " = " + ((numberOfGroups * (movedOnes + (10 * movedTens)))), (zoomer / 2, ((-zoomer)) / 20)) → text3