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