Division Visualization

Division Visualization
Loading the math board and drawing, please wait…
2018-09-23 23:26
This example uses equilateral triangles to dynamically demonstrate the concept of division. It involves integer division and simulates the division process by moving triangles. The construction summary mentions the use of GeoGebra commands such as Zip, Take, If, Textfield, Text, etc. It is suitable for high-grade elementary or junior high school students to learn about division and integer division.

GeoGebra Commands & Parameters

  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