Division Visualization
Loading the math board and drawing, please wait…
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
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) → rightGroupCentersZip(Sequence[AAA + (((i * 2) * withinGroupsSpacer), 0), i, ((-(rightColumnsNeed - 1))) / 2, (rightColumnsNeed - 1) / 2, 1], AAA, rightGroupCenters) → rightAnchorsZip(Flatten[Sequence[AAA + (0, (withinGroupsSpacer * i)), i, -4.5, 4.5, 1]], AAA, Zip[First[BBB, Div[groupSize, 10]], BBB, rightAnchors]) → rightTensZip(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]) → rightOnesTake(Zip[Flatten[Join[{AAA, BBB}]], AAA, rightTens, BBB, rightOnes], movedGroups - moverSize + 1, movedGroups) → newRightFirst(Flatten[Sequence[Sequence[Point[{(leftSpacer * i), (leftSpacer * j)}], i, -1, (-ceil(total^(0.5))), -1], j, 1, ceil(total^(0.5)), 1]], total) → totalLeftDotsIf(¬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]]]) → altDestinationsIf(¬movingOnes, {(1, 0), (2, 0)}, Take[totalLeftDots, total + 1 + ((0 - totalMoved) * numberOfGroups), total + ((movingSize - totalMoved) * numberOfGroups)]) → altOldLeftDotsTake(totalLeftDots, total - (movedGroups * groupSize) + 1, total - ((movedGroups - moverSize) * groupSize)) → oldLeftTextfield(totalText) → InputBox1Textfield(groupSizeText) → InputBox2Textfield(numberOfGroupsText) → InputBox3If(movingGroups, First[totalLeftDots, total - (movedGroups * groupSize)], First[totalLeftDots, total - (numberOfGroups * ((10 * movedTens) + movedOnes))]) → currentLeftDotsFirst(Zip[Polygon[AAA + ((-0.45 * rightSpacer), (-0.45 * rightSpacer)), AAA + ((0.45 * rightSpacer), (-0.45 * rightSpacer)), 4], AAA, rightGroupCenters], movedGroups) → groupSquaresZip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, currentLeftDots) → remainingLeftSquaresZip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, Remove[totalLeftDots, currentLeftDots]) → leftBehindIf(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)}) → movedRightIf(Defined[total] ∧ Defined[numberOfGroups], (1.1 * Max[ceil(total^(0.5)) + rightSpacer, (ceil(numberOfGroups)^(0.5) * rightSpacer) + rightSpacer]), 10) → zoomerText(Length[remainingLeftSquares], (((-zoomer)) / 2, ((-zoomer)) / 20)) → text1If(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)}]) → movingDotsZip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, movingDots) → movingSquaresIf(movedGroups > 0, Flatten[Take[Zip[Flatten[Join[{AAA, BBB}]], AAA, rightTens, BBB, rightOnes], 1, movedGroups - moverSize]], {(1, 0), (2, 0)}) → oldRightZip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, oldRight) → oldRightSquaresLength(Flatten[oldLeft]) → aLength(Flatten[newRight]) → bZip(Polygon[AAA, AAA + (withinGroupsSpacer, 0), 4], AAA, Flatten[movedRight]) → altMovedRightSquaresText(movedGroups + " x " + groupSize + " = " + ((movedGroups * groupSize)), (zoomer / 2, ((-zoomer)) / 20)) → text2Text(numberOfGroups + " x " + (movedOnes + (10 * movedTens)) + " = " + ((numberOfGroups * (movedOnes + (10 * movedTens)))), (zoomer / 2, ((-zoomer)) / 20)) → text3