Comparing Fractions Using a Benchmark

Comparing Fractions Using a Benchmark
Loading the math board and drawing, please wait…
2023-06-26 19:02
① This GeoGebra example demonstrates how to compare fractions using one-half (½) as a benchmark, with circular and half-circle visual models that make fraction size intuitive. ② The core mathematical concepts include benchmark numbers (zero, one-half, one), fraction comparison and ordering, fraction sense, and equivalent fractions. ③ Construction highlights: the applet uses commands such as RandomUniform to generate random fractions, Sequence and If to manage options, Circle and CircleSector to build circle and semicircle models, Translate and Zip to position objects, Text for labels, Slider (animateInequalityControl) to control animation, and draggable points (dragPointsFrac1/2) for interactive exploration, with KeepIf and IndexOf handling dynamic data. ④ It is designed for grades 4-5 students, suitable for classroom exploration or independent practice, and includes open-ended questions to deepen understanding of fraction comparison strategies.

GeoGebra Commands & Parameters

  1. RandomUniform(0, 0.99, 200) → allRandomSeeds, {0.1488988986124473, 0.23412759938086947, 0.0171711996435389, 0.40870012227180524, 0.3310182530686135, 0.032659693657403524, 0.6595446679566607, 0.6586634599553712, 0.60557251414151, 0.25969809480574657, 0.5658762038087762, 0.9603097139239879, 0.022425739867138174, 0.2026864443060217, 0.09631657977948635, 0.6257268322122754, 0.8440319291454371, 0.5173709709176897, 0.669374033637702, 0.4083741391627455, 0.9849411602593822, 0.7022839645523604, 0.5060041826134926, 0.6437801077273141, 0.04661579065862672, 0.01460972249498697, 0.19779254251862305, 0.04617468810190421, 0.12864420596124188, 0.8451973584606085, 0.18185454715922122, 0.9778204375581194, 0.6813746449317322, 0.1987176741647721, 0.20448304609825724, 0.4102565859985069, 0.07736550337269653, 0.4891308927905225, 0.02841479634217346, 0.41006003102649147, 0.5698583419999401, 0.13073983065548392, 0.4848666803734707, 0.8960526152873576, 0.5457279665525939, 0.7211473705261503, 0.631209352890093, 0.010147936445472154, 0.9380501470821964, 0.9044204790192404, 0.04830016630922307, 0.9702323585169726, 0.8595494962323736, 0.6106818670951991, 0.6480891258814335, 0.8006133012990023, 0.04275168693983401, 0.44220856234554423, 0.3521407775679549, 0.013643887164386243, 0.1656614425081156, 0.985911621986174, 0.45518208801874804, 0.39514743289264237, 0.6232236301228712, 0.6378027301585873, 0.5046899723242427, 0.006215359336733127, 0.9346977688635758, 0.696724619765923, 0.37787494985531084, 0.8648417776517789, 0.2753868709509406, 0.5522286824816305, 0.6211955226303277, 0.6626836537561186, 0.8179093867961217, 0.7750286015721883, 0.9047557146520757, 0.7349989999403738, 0.42338882849019965, 0.10794082340184363, 0.06459186046896452, 0.6355173038816794, 0.7365585175614053, 0.4706432844942688, 0.6499467094521616, 0.6926343892177997, 0.5108394754756139, 0.3629402731613279, 0.32015826005302483, 0.8289006456591794, 0.8999476461976595, 0.0785173602666734, 0.946757676895947, 0.3622847690307481, 0.7115219075939824, 0.5544015865310703, 0.7207744206107319, 0.1751467304189589, 0.2556378284564827, 0.9705130138084982, 0.46308907656957604, 0.38524205552092494, 0.07688204594887221, 0.2688004403997181, 0.23695350440437526, 0.21240587953220538, 0.27291099693782034, 0.4224996289223751, 0.10651452393929994, 0.5248287200823469, 0.05510227574675574, 0.4930341293847656, 0.9733318622980132, 0.4000373069530971, 0.348031063936384, 0.8549993700532047, 0.12447284758782172, 0.6078322964728788, 0.7940635623929964, 0.5185275675864528, 0.3507955237502385, 0.01551085590650576, 0.08735826814319347, 0.883126418061643, 0.2624988624547894, 0.4697161058769986, 0.6580008111566006, 0.7878164656422483, 0.7809228236929364, 0.9442060324383394, 0.2118716881027566, 0.16906232025423362, 0.23092288985704343, 0.2687235393784539, 0.7251561959942516, 0.24060028531324343, 0.5469231472831371, 0.9709756254986845, 0.01415456872359297, 0.8178094907877757, 0.9479685129227263, 0.8014927099121302, 0.44123506879497315, 0.7237568399143482, 0.14275120186926502, 0.09984101513800041, 0.43639696330634914, 0.18446503402289985, 0.34467835480439213, 0.7302991893336088, 0.5509691967641621, 0.5873110616827971, 0.15957674552636522, 0.10568640685400604, 0.30547069881487976, 0.8987573473807077, 0.5345976707242913, 0.7495435467867618, 0.967591872823667, 0.42584973801217685, 0.7162892626384315, 0.5393191010455851, 0.23863105621341904, 0.8000871968325843, 0.8286450617721073, 0.216601219605994, 0.2975299491657133, 0.6123746565096662, 0.7982174199934429, 0.594763028235273, 0.2708999301847482, 0.9638160387482553, 0.8231005514488804, 0.7296515583267494, 0.025116918401095294, 0.21908648450500745, 0.0757429192625069, 0.655152902427123, 0.2726853247451972, 0.947043200095376, 0.4161400747147797, 0.6926036434255667, 0.7696323210977506, 0.2370910337288973, 0.08198836542254465, 0.5510958323295498, 0.5936916466523172, 0.1296146095789011, 0.6858468344406283, 0.7947357227393718, 0.05447170003910775, 0.3945207447384796, 0.8862591284215835, 0.7228678977075176, 0.6166756457449899, 0.5136049056196913, 0.9001284053711195, 0.9801655205097833}
  2. Sequence(((k * 2) * pi / frac2Den), k, 0, frac2Den - 1) → frac2Angles, {0, 3.141592653589793}
  3. If(animateInequalityControl ≥ 1, Min[1, animateInequalityControl - 1], 0) → animateInequality2S1
  4. Translate(circleLoc2Fixed, Vector[(animateInequality2S1 * Vector[circleLoc2Fixed, circleLoc2Final])]) → circleLoc2
  5. If(animateInequality2S1 > 0 ∧ indexMovingFrac ≟ 2, circleLoc2, fracP2) → frac2Center
  6. Sequence(((k * 2) * pi / frac1Den), k, 0, frac1Den - 1) → frac1Angles, {0, 3.141592653589793}
  7. If(animateInequality2S1 > 0 ∧ indexMovingFrac ≟ 1, circleLoc2, fracP1) → frac1Center
  8. Zip((x(frac2Center) + sin(A), y(frac2Center) + cos(A)), A, frac2Angles) → outerPointsFrac2
  9. Zip((x(frac1Center) + sin(A), y(frac1Center) + cos(A)), A, frac1Angles) → outerPointsFrac1
  10. Take(allRandomSeeds, randIndex, randIndex + numRandoms - 1) → currentRandomSeeds
  11. Element(frac1Options, 1 + floor((currentRandomSeeds(1) * Length[frac1Options]))) → frac1
  12. Element(frac1, 2) → den1
  13. Sequence(Rotate[outerPointsFrac1(1), (-360°) / a, frac1Center], a, 2, 9) → dragPointsFrac1
  14. Point(dragPointsFrac1) → dragPointFrac1
  15. Sequence(Rotate[outerPointsFrac2(1), (-360°) / a, frac2Center], a, 2, 9) → dragPointsFrac2
  16. Point(dragPointsFrac2) → dragPointFrac2
  17. Length(KeepIf[A ≟ true, A, frac2SectorClicked]) → frac2StudentNum
  18. Length(KeepIf[A ≟ true, A, frac1SectorClicked]) → frac1StudentNum
  19. Element(frac1, 1) → num1
  20. KeepIf(Element[A, 1] ≠ num1 ∧ Element[A, 2] ≠ den1, A, allFrac2Options) → frac2Options
  21. Element(frac2Options, 1 + floor((currentRandomSeeds(2) * Length[frac2Options]))) → frac2
  22. Sequence(FracStart + (((fracRadius * 3) + (3 * spaceBetween), 0) * k), k, 0, 1) → homeLocationsFrac
  23. Sequence(Rotate[dragPointFrac2, ((-b) * ((2 * pi)) / frac2DragDen), frac2Center], b, 1, frac2DragDen) → outerPointsFrac2Drag
  24. Sequence(Rotate[dragPointFrac1, ((-b) * ((2 * pi)) / frac1DragDen), frac1Center], b, 1, frac1DragDen) → outerPointsFrac1Drag
  25. Translate(halfCircleLoc2Stationary, Vector[(animateInequality2S1 * Vector[halfCircleLoc2Stationary, halfCircleLoc1])]) → halfCircleLoc2
  26. Element({{1, 2}, {2, 1}}, 1 + floor((currentRandomSeeds(1) * 2))) → order
  27. Element(frac2, 2) → den2
  28. Element(frac2, 1) → num2
  29. Zip(CircleSector[frac1Center, A, B], B, outerPointsFrac1Drag, A, Join[{Take[outerPointsFrac1Drag, 2, frac1DragDen], {Element[outerPointsFrac1Drag, 1]}}]) → frac1AllSectors
  30. Element(frac1AllSectors, 1) → f1sector1
  31. Element(frac1AllSectors, 2) → f1sector2
  32. Element(frac1AllSectors, 3) → f1sector3
  33. Element(frac1AllSectors, 4) → f1sector4
  34. Element(frac1AllSectors, 5) → f1sector5
  35. Element(frac1AllSectors, 6) → f1sector6
  36. Element(frac1AllSectors, 7) → f1sector7
  37. Element(frac1AllSectors, 8) → f1sector8
  38. Element(frac1AllSectors, 9) → f1sector9
  39. Sequence(StartPt + ((boxWidth + spaceBetween, 0) * k), k, 0, 3) → allHomeAnchors
  40. Zip(allHomeAnchors(A), A, homeIndices) → homeLocations
  41. centerBox(boxWidth, boxWidth, P1_{1}) → box1
  42. centerBox(boxWidth, boxWidth, P2) → box2
  43. centerBox(boxWidth, boxWidth, boxAnchors(1)) → frame1
  44. centerBox(boxWidth, boxWidth, boxAnchors(2)) → frame2
  45. Element(movingPoints, movingIndex) → PMove
  46. IndexOf(true, Zip[IsInRegion[PMove, A], A, {frame1, frame2}]) → locationPMove
  47. centerBox(boxWidth, boxWidth, PMove) → highlightBox
  48. centerBox(boxWidth, boxWidth, boxAnchors(locationPMove)) → highlightFrame
  49. Zip(Text[("" * A), B, true, true, 0, 0], A, boxText, B, movingPoints) → boxTextDisplay
  50. Text(("" * boxText(movingIndex)), If[Defined[PMove], PMove, (300, 300)], false, true, 0, 0) → textHightlight
  51. centerBox(boxWidth, boxWidth, fraction1Location) → movingBox1
  52. centerBox(boxWidth, boxWidth, fraction2Location) → movingBox2
  53. Text(fracText(1), fraction1Location, true, true, 0, 0) → textFraction1Moving
  54. Text(fracText(2), fraction2Location, true, true, 0, 0) → textFraction2Moving
  55. Circle(fracP1, fracRadius) → circle1
  56. Circle(fracP2, fracRadius) → circle2
  57. Element(movingPointsFrac, movingIndexFrac) → PMoveFrac
  58. Circle(circleLoc1, fracRadius) → circleFrame1
  59. Circle(circleLoc2, fracRadius) → circleFrame2
  60. Circle(PMoveFrac, fracRadius) → highlightCircle
  61. IndexOf(true, Zip[IsInRegion[PMoveFrac, A], A, {circleFrame1, circleFrame2}]) → locationPMoveFrac
  62. Circle(circleAnchors(locationPMoveFrac), fracRadius) → highlightCircleFrame
  63. Circle(halfCircleLoc1, fracRadius) → halfCircleFrame1
  64. Circle(halfCircleLoc2, fracRadius) → halfCircleFrame2
  65. Text("<", circleLoc1 + (fracRadius + (spaceBetween * 1.5), 0), true, true, 0, 0) → lessThan
  66. Text("<", circleLoc2 + ((-fracRadius) - (spaceBetween * 1.5), 0), true, true, 0, 0) → lessThan2
  67. CircleSector(halfCircleLoc1, halfCircleLoc1 + (0, (-fracRadius)), halfCircleLoc1 + (0, fracRadius)) → halfOne
  68. CircleSector(halfCircleLoc2, halfCircleLoc2 + (0, (-fracRadius)), halfCircleLoc2 + (0, fracRadius)) → halfTwo
  69. Segment(halfCircleLoc1 + (0, fracRadius), halfCircleLoc1 - (0, fracRadius)) → midSeg1
  70. Segment(halfCircleLoc2 + (0, fracRadius), halfCircleLoc2 - (0, fracRadius)) → midSeg2
  71. Zip(Segment[Rotate[fracP1, A, fracP1], Rotate[fracP1 + (0, fracRadius), A, fracP1]], A, frac1Angles) → raysFrac1
  72. Zip(Segment[Rotate[fracP2, A, fracP2], Rotate[fracP2 + (0, fracRadius), A, fracP2]], A, frac2Angles) → raysFrac2
  73. Zip(CircleSector[frac2Center, A, B], B, outerPointsFrac2Drag, A, Join[{Take[outerPointsFrac2Drag, 2, frac2DragDen], {Element[outerPointsFrac2Drag, 1]}}]) → frac2AllSectors
  74. Element(frac2AllSectors, 1) → f2sector1
  75. Element(frac2AllSectors, 2) → f2sector2
  76. Element(frac2AllSectors, 3) → f2sector3
  77. Element(frac2AllSectors, 4) → f2sector4
  78. Element(frac2AllSectors, 5) → f2sector5
  79. Element(frac2AllSectors, 6) → f2sector6
  80. Element(frac2AllSectors, 7) → f2sector7
  81. Element(frac2AllSectors, 8) → f2sector8
  82. Element(frac2AllSectors, 9) → f2sector9
  83. Sequence(false, k, 1, 9) → allFalse
  84. Zip(If[frac2SectorClicked(B), Element[frac2AllSectors, B]], B, Sequence[j, j, 1, 9]) → frac2ColoredSectors
  85. Corner(5) → appSize
  86. Text("< \dfrac{1}{2}", boxLoc1 + (boxWidth, 0), true, true, 0, 0) → textLessThanHalf
  87. Text(" \dfrac{1}{2}<", boxLoc2 + (((-boxWidth) * 1.1), 0), true, true, 0, 0) → textGreaterThanHalf
  88. Text("<", fraction1Location + (boxWidth / 2 + (spaceBetween * 1.5), 0), true, true, 0, 0) → textLessThan
  89. onboardingTextOffset(Corner[onboardingText, 1], Corner[onboardingText, 3], onboardingCase, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset
  90. If(animateInequalityControl < 2, 0, animateInequalityControl - 2) → animateInequality2
  91. Text(fracText(1), finalFraction1Location + (animateInequality2 * Vector[finalFraction1Location, finalInequalityLoc1]), true, true, 0, 0) → movingFinalFrac1
  92. Text(fracText(2), finalFraction2Location + (animateInequality2 * Vector[finalFraction2Location, finalInequalityLoc2]), true, true, 0, 0) → movingFinalFrac2
  93. If(frac1DragDen ≟ den1, colorPink, colorPurple) → frac1Color
  94. If(frac2DragDen ≟ den1, colorPink, colorPurple) → frac2Color
  95. Text((((((("\text{= \textcolor{" * colorPink) * "}\dfrac{{") * frac1StudentNum) * "}}{") * frac1DragDen) * "}}"), homeLocationsFrac(1) + (fracRadius, 0), true, true, 1, 0) → fracLabel1
  96. onboardingTextOffset(Corner[onboardingText3, 1], Corner[onboardingText3, 3], onboardingCase3, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset3
  97. onboardingTextOffset(Corner[onboardingText2, 1], Corner[onboardingText2, 3], onboardingCase2, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset2
  98. expandCircle(dragPointFrac1, 7 + (7 * pulsing2), Corner[1], Corner[3], Corner[5]) → pulsingCircle
  99. Sequence((((("SetFixed(circle" * A) * ",false,") * enableInput) * ")"), A, 1, Length[movingPointsFrac]) → cmdFixCircles
  100. Sequence((((("SetFixed(box" * A) * ",false,") * enableInput) * ")"), A, 1, Length[movingPoints]) → cmdFixBoxes
  101. Text((((((("\text{= \textcolor{" * colorPurple) * "}\dfrac{{") * frac2StudentNum) * "}}{") * frac2DragDen) * "}}"), homeLocationsFrac(2) + (fracRadius, 0), true, true, 1, 0) → fracLabel2
  102. expandCircle(fracP1, (fracRadius * unitPixels) + (7 * pulsing), Corner[1], Corner[3], Corner[5]) → pulsingFraction
  103. onboardingTextOffset(Corner[onboardingText4, 1], Corner[onboardingText4, 3], onboardingCase4, Corner[1], Corner[3], Corner[5]) → OnboardingTextOffset4
  104. Zip(If[frac1SectorClicked(B), Element[frac1AllSectors, B]], B, Sequence[j, j, 1, 9]) → frac1ColoredSectors
  105. Sequence(Segment[frac1Center, Rotate[dragPointFrac1, (b * (360°) / frac1DragDen), frac1Center]], b, 2, frac1DragDen + 1) → raysFrac1Drag
  106. Sequence(Segment[frac2Center, Rotate[dragPointFrac2, (b * (360°) / frac2DragDen), frac2Center]], b, 2, frac2DragDen + 1) → raysFrac2Drag
  107. Circle(frac1Center, fracRadius) → frac1Frame
  108. Circle(frac2Center, fracRadius) → frac2Frame

AI Drawing Prompt Reference

Create an interactive visual for comparing fractions using a benchmark: show a full circle and a half-circle (semicircle) as reference, with each circle partitioned into equal arc sectors. Display two fraction models side by side, each having its own center, a set of equally spaced outer points on the circumference, and the corresponding sector region that represents the chosen numerator out of its denominator. Include draggable point sets on the outer arcs so the sector boundary can rotate to new positions, and translate the half-circle benchmark to align with the other model’s location. Add a pair of framed target boxes or areas below for students to place and compare the two fractions by their visible sector portions.
The prompt above was compiled from the original drawing commands and is for reference only.